/ / Eval zwraca false, nawet trudne wartości są równe - vbscript

Eval zwraca wartość false, nawet jeśli twarde wartości są równe - 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

Odpowiedzi:

2 dla odpowiedzi № 1

Twoje równanie nie zwraca wartości true, ponieważelementami równania są liczby zmiennoprzecinkowe, których nie można dokładnie przedstawić. 760.27 można przekonwertować na 760.270000000001 po zapisaniu w rejestrze zmiennoprzecinkowym.

Właśnie dlatego 760.27 + 64.56 = 824,83 jest fałszem.

Niektóre wartości zmiennoprzecinkowe można przedstawić dokładnie tak, jak 0,5 lub 0,25.

Właśnie dlatego 760.75 + 64,75 = 825,5 jest prawdą.

Możesz przeliczyć swoje liczby na wariant waluty podtypu, a twoje równanie będzie prawdziwe:

CCur (760.27) + CCur (64.56) = CCur (824,83)