我正在实施http://support.microsoft.com/kb/196652
中的AsymArith圆方法现在我遇到一个使用Int()函数的奇怪问题:它应该只剥离小数部分,但它也会改变整数部分。
? 131.415 * 100 + 0.5
13142
? Int(131.415 * 100 + 0.5)
13141
有人能解释为什么Int()函数会改变表达式的结果吗?
答案 0 :(得分:2)
它与int函数的内部舍入机制有关。
试着举例:
print Int(131.415 * 100 + format(0.5, "0.00"))
当您自己明确设置舍入时,您将获得预期的结果。
我会参考这篇文章:
答案 1 :(得分:1)
可能是立即窗口的魔法由类型转换引起(显示 ?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