VBA比较运算符(不等于)部分无法识别相等的值

时间:2014-08-14 08:32:49

标签: vba comparison equals operator-keyword

我正在使用VBA来检查两个变量的值是否相等,使用“<>”运营商。 我在几对列中运行几对值的操作。 值全部格式化为数字,变量的类型为“double”。

对于大多数值对,它工作正常,但是对于几对(对应于两列)存在问题:

对于某些值,运算符将相等值视为不等。当我调试时,我可以看到操作员说71,192<> 71,192和运营商将这些值视为不相等。

其对应列中的其他值对工作正常,但我看不出它们与那些不起作用的区别。

任何帮助都将受到高度赞赏。

约亨

1 个答案:

答案 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