VBA:Int 函数的奇怪行为

问题描述 投票:0回答:1

我想知道我在 VBA 中看到的这种行为。我正在使用即时控制台来调试我的代码并得到以下结果:

Debug.Print(Int(0.00024575*10000000+0.5))
 2457

我希望这个结果是

2458
。有谁知道为什么会发生这种情况?正如预期的那样,在调用
Int
函数之前,计算采用双精度。

Debug.Print(VarType(0.00024575*10000000+0.5))
 5 

非常感谢任何帮助!

vba debugging types integer double
1个回答
0
投票

如果您运行以下测试:

Sub Test()
    Dim d As Double: d = 0.5 + 0.00024575 * 10000000
    
    Debug.Assert d = Int(d)
    Debug.Assert 0.5 + 2457.5 = Int(0.5 + 2457.5)
    Debug.Assert 0.5 + 0.00024575 * 10000000 = Int(CDbl(0.5 + 0.00024575 * 10000000))
    Debug.Assert 0.5 + 0.00024575 * 10000000 = CDbl(0.5 + 0.00024575 * 10000000)
    Debug.Assert 0.5 + 0.00024575 * 10000000 = VBA.Int(0.5 + 0.00024575 * 10000000)
    Debug.Assert 0.5 + 0.00024575 * 10000000 = Int(0.5 + 0.00024575 * 10000000)
End Sub

你会看到只有最后一个断言失败了。这可能是一个编译器错误。

请注意,

Int
VBA.Int
不同。

© www.soinside.com 2019 - 2024. All rights reserved.