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.에서 이동 됨]

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
행복해지고 싶다면, 잠시 동안만이라도 가슴에 손을 얹고 생각해 보라. 그러면 진정한 즐거움은, 발치에 돋아나는 잡초나 아침 햇살에 빛나는 꽃의 이술과 같이 우리 주변에 무수히 널려 있다는 것을 알 수 있을 것이다. 《하루 5분 생각이 인생을 결정한다 》 (이범준)