Int()函数在MS Access VBA中的使用方法

3

我正在实现AsymArith舍入方法,该方法来源于http://support.microsoft.com/kb/196652

目前,我遇到了一个奇怪的问题,涉及到Int()函数:它只应该去掉小数部分,但是它也会改变整数部分。

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

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

2个回答

2

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

例如,尝试一下:

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

当您自己明确设置舍入时,您将获得预期的结果。
我建议阅读这篇文章:

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


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 

实际上,在函数中使用Int()函数也会导致问题,但首先将其转换为Double类型可以解决这个问题。Int(CDbl(131.415 * 100 + 0.5)) = 13142 谢谢! - Johan van der Slikke
我同意“即时窗口的魔力”,因为在函数中强制转换是无用的,它总是能正常工作。我认为在即时窗口中它会分裂成 Int(131.415 * 100) + Int(0.5),这就是为什么结果是 13141 - Lionel T.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接