Работа с дробными числами в скриптах MyChat Server
When working with fractional numbers and expect non-integer result, specify it in the code by placing a dot after each number or specifying a result type.
MSL uses a default delimiter of an integer and fractional part a dot, not depending on the current system local language.
Example
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.
Script work result
[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"): Script operation time: 6 ms
[17:02:14] (Run "FloatTest"): Script done successfully.