3

我正在实施来自http://support.microsoft.com/kb/196652的 AsymArith 回合方法

现在我遇到了 Int() 函数的一个奇怪问题:它应该只去除小数部分,但它也会改变整数部分。

? 131.415 * 100 + 0.5
 13142 
? Int(131.415 * 100 + 0.5)
 13141 

有人可以解释为什么 Int() 函数会改变表达式的结果吗?

4

2 回答 2

2

它与 int 函数的内部舍入机制有关。

尝试例如:

print Int(131.415 * 100 + format(0.5, "0.00"))

当您自己明确设置舍入时,您将获得预期的结果。

我会参考做这篇文章:

http://support.microsoft.com/kb/214118

于 2013-10-14T10:36:14.227 回答
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 
于 2013-10-14T10:26:10.987 回答