Тема: VBScript: работаем с дробными числами
При работе с числами с десятичной точкой "в лоб" можно нарваться на неприятности. Например, следующий скрипт может выдать "не равно", что будет несколько неожиданно:
a = 5130.60
b = 7448.46
If a + b = 12579.06 Then
WScript.Echo("равно")
Else
WScript.Echo("не равно")
End If
Десятичную дробь в двоичную часто нельзя перевести точно, поэтому при таком прямолинейном подходе всегда есть вероятность ошибки. Вышеприведённый скрипт может выдать неожиданный результат, потому что сумма a + b всегда может отличаться от 12579.06 на какую-то крохотную величину:
Wscript.Echo 5130.60 + 7448.46 - 12579.06
Чтобы избежать таких ситуаций, можно оценивать разницу величин "a + b" и "12579.06" - если она достаточно мала, то всё хорошо:
a = 5130.60
b = 7448.46
If Abs(a + b - 12579.06) < 0.001 Then
WScript.Echo("равно")
Else
WScript.Echo("не равно")
End If
Но проще и понятнее всего вовремя округлять числа:
a = 5130.60
b = 7448.46
If Round(a + b, 2) = 12579.06 Then
WScript.Echo("равно")
Else
WScript.Echo("не равно")
End If
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.