即使艰难的价值相等,Eval也会返回false

时间:2018-01-11 22:46:24

标签: vbscript

sCResult = Eval(Trim(760.27 + 64.56 = 824.83))

Select Case sCResult
Case False
    MsgBox("This is False ")
Case True
    MsgBox("This is True ")
Case Else
    MsgBox("This is Error ")
End Select

1 个答案:

答案 0 :(得分:2)

您的等式不会返回true,因为等式的元素是浮点数,无法准确表示。一旦存储在浮点寄存器中,760.27可以转换为760.270000000001。

这就是为什么760.27 + 64.56 = 824.83是错误的。

某些浮点值可以完全表示为0.5或0.25。

这就是760.75 + 64.75 = 825.5为真的原因。

您可以做的是将您的数字转换为子类型货币的变体,您的等式将为真:

CCur(760.27)+ CCur(64.56)= CCur(824.83)