Целое число, которое вы хотите выразить:
$var = 10000000000000000000000000;
недоступно в вашей системе. Он слишком большой, и поэтому PHP преобразует его в число с плавающей точкой, которое изменит число (пример 32-битной системы):
10000000000000000905969664
Общие ограничения:
yours : 10 000 000 000 000 000 000 000 000
32 bit: 2 147 483 648
64 bit: 9 223 372 036 854 775 808
Изменение значения называется точностью с плавающей запятой, Руководство PHP по целым числам расскажет вам о целочисленном пределе, а страница с плавающей запятой о точности с плавающей запятой (см. Большое красное предупреждение). В зависимости от того, какая у вас система, вы можете скомпилировать PHP с диапазонами, которые нужны вашему приложению, или вы должны использовать другой тип данных, например, с библиотекой gmp , которая может выбирать строки как целые числа и обрабатывать их.
В следующем примере показаны только выходные данные, но вы можете выполнять умножения и т. Д. :
$r = gmp_init('10000000000000000000000000');
echo gmp_strval($r);
Надеюсь, это полезно.