Василий М.
Новичок
PHP:
echo PHP_INT_MAX; // 2147483647 (windows)
echo (int)'9223372036854775807'; // 2147483647
echo "\n";
echo (int)9223372036854775807; // 0
1. Если строка не содержит какой-либо из символов '.', 'e', или 'E', и значение числа помещается в пределы целых чисел (определенных PHP_INT_MAX), строка будет распознана как целое число (integer). Во всех остальных случаях она считается числом с плавающей точкой (float).
Почему первое число в строке стало PHP_INT_MAX, если согласно ману оно должно стать с плавающей точкой?
2. При преобразовании из float в integer, число будет округлено в сторону нуля. Если число с плавающей точкой превышает размеры integer (обычно +/- 2.15e+9 = 2^31 на 32-битных системах и +/- 9.22e+18 = 2^63 на 64-битных системах, кроме Windows), результат будет неопределенным, так как float не имеет достаточной точности, чтобы вернуть верный результат. В этом случае не будет выведено ни предупреждения, ни даже замечания!
Тут не ясно тоже. Что значит округлено в сторону нуля? В моем случае это именно округление в торону нуля или "неопределенный результат"?
Последнее редактирование: