Option Explicit Sub main() Dim 값(3) As Long Dim 합계 As Long 값(1) = 20.5 값(2) = 30.1 값(3) = 40.1 합계 = 값(1) + 값(2) + 값(3) MsgBox 합계 End Sub 이 프로그램에서는 합계 결과값이 90이 나옵니다
Option Explicit Sub main() Dim 값(3) As Long Dim 합계 As Long 값(1) = 20.6 값(2) = 30.1 값(3) = 40.1 합계 = 값(1) + 값(2) + 값(3) MsgBox 합계 End Sub 이 프로그램에서는 합계 결과값이 91이 나옵니다
디버그해보니, 첫번째프로그램에선 값1이 20, 두번째프로그램에선 값1이 21로 읽히더군요 그래서 소수점이 .6부터 반올림이 된다고 생각했습니다~ 그런데..
Option Explicit Sub main() Dim 값(3) As Double Dim 합계 As Long 값(1) = 20 값(2) = 30.5 값(3) = 40 합계 = 값(1) + 값(2) + 값(3) 값과 합계의 변수타입을 다르게 지정했을 때 MsgBox 합계 이 프로그램에선 합계 값이 90이 나왔어여~ End Sub
Option Explicit Sub main() Dim 값(3) As Double Dim 합계 As Long 값(1) = 20.1 값(2) = 30.3 값(3) = 40.1 합계 = 값(1) + 값(2) + 값(3) MsgBox 합계 End Sub 그런데 이프로그램에선 합계값이 91이 나왔습니다..
아무리 생각을 해봐두 이해가 안되서여.. 반올림이 .5에서 되는건지 .6에서 되는건지
원래 double형에서는 같은 90.5인 값이 왜 Long형으로 바뀌면서 다른 값을 나타내는지 설명해주세여~
질문이 넘 길어서 죄송해여~~^^;;
|