13.13. Не работают десятичные дроби, дробные числа, числа с запятыми!
В: Не работают десятичные дроби, дробные числа, числа с запятыми!
О: Да, всё верно. Об этом написано в справке:
QSP не поддерживает дробные числа, можно использовать только целые.
Однако, если очень уж хочется использовать дробные числа, есть выход.
Во-первых, все значения можно увеличить во столько раз, какая погрешность требуется.
Например, мне нужно считать с точностью до сотых долей. Я увеличиваю значение в 100 раз.
Было
здоровье=100
, тепер ь
здоровье=10000
Таким образом, если мне нужно вычесть пять сотых от этого значения, я просто вычитаю 5:
здоровье=здоровье-5
Однако, если мы попробуем вывести значение на экран как есть, это всё равно будет целое число, поэтому нам нужно "привести" его к требуемому виду. Это делается просто.
Целую часть получаем делением числа на 100:
здоровье/100
Дробную часть вычисляем, как остаток от деления на 100:
здоровье mod 100
Осталось показать на экране:
*p "Здоровье: <<здоровье/100>>."+$iif((здоровье mod 100<10),"0<<здоровье mod 100>>",$str(здоровье mod 100))+"/100"
Во-вторых, если вам лень увеличивать числа и приводить их к нужной погрешности, воспользуйтесь уже готовой библиотечкой easy.math. Она научит QSP работать с дробными числами. Правда это повысит нагрузку на игру, и в случае больших вычислений игра будет притормаживать.