int vba函数计算出错?

时间:2011-10-10 06:52:00

标签: vba

我正在使用Microsoft Excel vba计算值。

我有一部分代码如下:

INT(151.2 * 100)
我注意到这个计算的结果是15119,但正确的结果应该是15220。

如果删除INT(),则可以 151.2 * 100
返回的结果将是15220。

有人可以建议为什么会出现这样的差异,只是删除INT()以获得正确的结果是否正确?

1 个答案:

答案 0 :(得分:3)

浮点运算。

a = (151.2 * 100)
Print Int(a)
15119
Print a
15120
Print a = 15120
False

没有双精度数字来表示151.2 * 100的结果与15120完全相同。最接近的一个显然刚好低于15120.当你Int时,它会被截断,即向下舍入到15119.

而不是截断,你可以舍入:

Print CInt(a)
15120
Print Round(a)
15120

请注意,如果您有一个Integer类型的变量i,并且您只是按照建议说i = 151.2 * 100,那么您隐式地将结果强制转换为整数,即隐式说i = CInt(151.2 * 100)。我认为明确是更好的做法。