вопрос по приведению float к int

Василий М.

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

Тут не ясно тоже. Что значит округлено в сторону нуля? В моем случае это именно округление в торону нуля или "неопределенный результат"?
 
Последнее редактирование:

MiksIr

miksir@home:~$
1. Сам руками сказал, что строку нужно не к float, а к int приводить
2. Неопределенный результат
 

MiksIr

miksir@home:~$
В строке - строка, а не число. Числом оно становится, когда строку нужно использовать как число, т.е. неявно - и тогда будет, как написано. Или когда будет явно указано приведение типов - как в п.1, тогда так и будет, как указал.
 
Сверху