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
우정에 정력을 쏟아라. 그러면 당신에게 돌아오는 대가는 놀라울 만큼 만족스러울 것이다. 친구들이 당신을 필요로 할 때 당신이 그들에게 도움을 준다면, 당신이 후원과 위안을 얻기 위해 그들을 필요로 할 때 좋은 친구들이 도움을 줄 것이다. 롱펠로우가 말했듯이 친구를 가지려면 친구가 되어라. (어니 젤린스키 "결혼하지 않는 즐거움"中에서)