Перейти к основному содержимому

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