我正在使用VBA来检查两个变量的值是否相等,使用“<>”运营商。 我在几对列中运行几对值的操作。 值全部格式化为数字,变量的类型为“double”。
对于大多数值对,它工作正常,但是对于几对(对应于两列)存在问题:
对于某些值,运算符将相等值视为不等。当我调试时,我可以看到操作员说71,192<> 71,192和运营商将这些值视为不相等。
其对应列中的其他值对工作正常,但我看不出它们与那些不起作用的区别。
任何帮助都将受到高度赞赏。
约亨
答案 0 :(得分:2)
正如@mehow指出的那样,使用浮点数时需要小心 我强烈建议您阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic
如果您使用的是基数为10的数字,则Decimal
类型可能更适合您的需求。您可以使用Float
Double
/ Decimal
(基准2精度)转换为CDec()
Sub test()
Dim a As Double, b As Double
a = 71.192
b = 7119.2
Debug.Print a * 100 = b ' False
Debug.Print CDec(a * 100) = CDec(b) ' True
End Sub