Int()函数MS Access VBA

时间:2013-10-14 10:00:24

标签: vba ms-access access-vba rounding

我正在实施http://support.microsoft.com/kb/196652

中的AsymArith圆方法

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

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

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

2 个答案:

答案 0 :(得分:2)

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

试着举例:

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

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

我会参考这篇文章:

  

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

答案 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