我正在实现AsymArith舍入方法,该方法来源于http://support.microsoft.com/kb/196652
目前,我遇到了一个奇怪的问题,涉及到Int()函数:它只应该去掉小数部分,但是它也会改变整数部分。
? 131.415 * 100 + 0.5
13142
? Int(131.415 * 100 + 0.5)
13141
有人能解释一下为什么Int()函数会改变表达式的结果吗?
我正在实现AsymArith舍入方法,该方法来源于http://support.microsoft.com/kb/196652
目前,我遇到了一个奇怪的问题,涉及到Int()函数:它只应该去掉小数部分,但是它也会改变整数部分。
? 131.415 * 100 + 0.5
13142
? Int(131.415 * 100 + 0.5)
13141
有人能解释一下为什么Int()函数会改变表达式的结果吗?
这与int函数的内部舍入机制有关。
例如,尝试一下:
print Int(131.415 * 100 + format(0.5, "0.00"))
可能是立即窗口的魔力引起的类型转换(尽管?typename(131.415 * 100 + 0.5)为Double)。
?int(cdbl(131.415 * 100 + 0.5 ))
13142
Public Sub test_int()
Dim t As Double
t = 131.415 * 100 + 0.5
Debug.Print t
Debug.Print Int(t)
End Sub
13142
13142
Int(CDbl(131.415 * 100 + 0.5)) = 13142
谢谢! - Johan van der SlikkeInt(131.415 * 100) + Int(0.5)
,这就是为什么结果是13141
。 - Lionel T.