Работа с дробными числами в скриптах MyChat Server
"Для разработчиков", "Серверные скрипты", "Скриптовый язык MSL", "Работа с дробными числами".
При работе с дробными числами, когда ожидается, что результат может быть не целым, указывайте в коде это явно, ставя точку после каждого числа в выражении или указывая тип результата при приведении типов.
В MSL используется стандартный разделитель целой и дробной части — точка, вне зависимости от текущей системной локали операционной системы.
Пример
var
x, y, z: extended;
d1, d2: integer;
begin
x := 10/3.0;
mLogScript(FloatToStr(x), '');
y := 10;
z := 17;
x := y/z;
mLogScript(FloatToStr(x), '');
mLogScript(FloatToStr(10/4), '10/4');
mLogScript(FloatToStr(10/4.0), '10/4.0');
mLogScript(FloatToStr(10/9.9), '10/9.9');
mLogScript(FloatToStr(10/100), '10/100');
mLogScript(FloatToStr(10/100.0), '10/100.0');
mLogScript(FloatToStr(0.1234), '0.1234');
d1 := 10;
d2 := 17;
mLogScript(FloatToStr(d1/extended(d2)), '');
end.
Результат работы скрипта
[17:02:14] (Log "FloatTest"): 3.33333333333333
[17:02:14] (Log "FloatTest"): 0.588235294117647
[17:02:14] (Log "FloatTest"): [10/4] 2
[17:02:14] (Log "FloatTest"): [10/4.0] 2.5
[17:02:14] (Log "FloatTest"): [10/9.9] 1.01010101010101
[17:02:14] (Log "FloatTest"): [10/100] 0
[17:02:14] (Log "FloatTest"): [10/100.0] 0.1
[17:02:14] (Log "FloatTest"): [0.1234] 0.1234
[17:02:14] (Log "FloatTest"): 0.588235294117647
[17:02:14] (Run "FloatTest"): Время выполнения скрипта: 6 мс
[17:02:14] (Run "FloatTest"): Скрипт выполнен успешно.