我正在使用Microsoft Excel vba计算值。
我有一部分代码如下:
INT(151.2 * 100)
我注意到这个计算的结果是15119,但正确的结果应该是15220。
如果删除INT()
,则可以
151.2 * 100
返回的结果将是15220。
有人可以建议为什么会出现这样的差异,只是删除INT()
以获得正确的结果是否正确?
答案 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)
。我认为明确是更好的做法。