Отсутствие global $steamBase
было проблемой, как уже упоминалось в комментарии.(Совет: включите E_NOTICE
во время разработки.) Однако я хотел бы ответить на ваш вопрос:
Я думаю, что это связано с тем, что числа слишком велики или что-то нужно сделатьс 64 бит.Можно ли как-нибудь преобразовать их, чтобы они работали правильно?
Целые числа PHP подписаны и зависят от платформы.Использование 64-битных чисел не будет работать, если вы работаете на 32-битном хосте.
Так что ваша проблема верна.Но даже в 64-битной системе:
$x = 9223372036854775808; // highest bit (64th) set
var_dump($x);
--> float(9.2233720368548E+18)
Обратите внимание, что функции PHP Math в PHP работают со строками, а не целыми числами.Таким образом, вы должны хранить ваши большие числа в виде строк.
Это позволит обойти потенциальную проблему преобразования целых чисел в числа с плавающей точкой, которая может возникнуть даже в вашей 64-битной среде, если вы используете большие целые числа без знака.