我正在实施来自http://support.microsoft.com/kb/196652的 AsymArith 回合方法
现在我遇到了 Int() 函数的一个奇怪问题:它应该只去除小数部分,但它也会改变整数部分。
? 131.415 * 100 + 0.5
13142
? Int(131.415 * 100 + 0.5)
13141
有人可以解释为什么 Int() 函数会改变表达式的结果吗?
我正在实施来自http://support.microsoft.com/kb/196652的 AsymArith 回合方法
现在我遇到了 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