Функция ARRPUSH добавляет в массив неверное число, если нужное превышает 16 символов.
Код:
ARRPUSH($ARRY,12345678901234567)
PRINT($ARRY[0])
HALT
Лог:
15:19:34 12345678901234568
Windows 7 Ultimate x32
Clickermann v4.11 (Последняя версия)
Это не ошибка, и уж тем более ARRPUSH здесь не при чём
$a = 12345678901234567
LOGWRITE($a)
Будет то же самое.
Это переполнение. Целые числа, как и в большинстве языков имеют свой диапазон.
В кликере целые ограничены 15 разрядами. В принципе, они остаются целыми до 18 разрядов, но точность младших разрядов при этом теряется, их просто негде сохранять.
Вот для наглядности
$a = 99999999999999
FOR($i=0, $i < 7)
LOGWRITE($a)
$a = $a * 10 + 1
END_CYC
HALT
Лог:
9:17:02 99999999999999
9:17:02 999999999999991
9:17:02 9999999999999910
9:17:02 99999999999999104
9:17:02 999999999999991040
9:17:02 999999999999991040*10+1
9:17:02 999999999999991040*10+1*10+1
А отдельного данных, типа "long", нет. Да и не нужен он пока.
Вопрос уже всплывал здесь
http://crapware.aidf.org/forum/index.php?topic=132.0Минимальные числа тоже имеют ограничения, и сплавающей запятой
$a= 0.0000000000001
LOGWRITE ($a)
Это будет минимальное число, добавить ещё один ноль не получится.
Диапазон немного странный, десятичный. В большинстве случаев он либо 32 либо 64 битный.