Visual Basic, C & C++
분류 Visual Basic

[VB] Int()함수의 버그

페이지 정보

본문

  Int()함수의 버그                                                              TOP

 문제의 발생

 어떤 값에 0.3을 곱하고, 이 결과에서 소수점을 버린 다음 합계를 구하는 문제에서 발생한다.

 소스

  Option Explicit

  Sub Main()

       Dim a As Long, b As Long, c As Long
       Dim d As Double, e As Double, f As Double

       a = 10
       b = Int(a * 0.3)
       c = Int(a * 30 / 100)

       d = 10
       e = Int(d * 0.3)
       f = Int(d * 30 / 100)

       MsgBox Str(a) & Str(b) & Str(c) 
       MsgBox Str(d) & Str(e) & Str(f)

   End Sub

 (결과)   10 2 3

             10 2 3

 (해석) a * 0.3 은 0.3을 나타내는 수가 0.29999...라고 보면 
           몫은 2.99999...가 되어 소수 이하를 잘랐다고 보면되지만
          어쨌던 3 이 나오지 않으니 조심하기 바랍니다.
 

 (해결책) (1) 소수점 곱하기를 사용하지 않는다.
                     c = Int(a * 30 / 100)
              (2) Int() 함수 안에서 연산을 하지 않는다.
                     temp = a * 0.3
                     c = Int(temp)

[이 게시물은 최고관…님에 의해 2012-09-14 16:58:28 Etc.에서 이동 됨]

관련자료

등록된 댓글이 없습니다.
프로그래밍
Today's proverb
행복은 뭘까? 우리와 함께하는 것들. 숨쉬는 공기, 나무, 하늘, 가족, 친구. 이에 대한 고마움은 스쳐지나가기가 쉽다. 행복은 우리와 함께하는 것들의 가치를 아는 것이다. (신현림)