1

Тема: 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
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.