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
유쾌한 사람은 자기 일에만 몰두하는 사람이 아니다. 때론 자신의 일을 전부 제쳐놓고 타인의 문제에 전력을 쏟는 열정이 있는 사람이다. 타인에게 자신의 힘을 나누어주고 마음을 열어주는 것은 자신의 삶을 행복하게 만드는 방법이다.