Страницы

Поиск по вопросам

воскресенье, 29 марта 2020 г.

По какому принципу работают (int) и intval?

#php


В документации указано, что максимальное знаковое целое число для функции 9223372036854775807.

И, если мы в функцию добавляем строку с превышенной нормой, то на выходе получим
9223372036854775807.

echo (int) '4200000000000000000000';
// 9223372036854775807


Но если будет не строка, а число - на выходе получаем нечто, по не ясным принципам:

echo (int) 4200000000000000000000;
// -5857648805777768448


Почему так?
    


Ответы

Ответ 1



Переполнение сетки же. Оно у вас несколько раз происходит. Для теста можете такой код запустить: $test = 4200000000000000000000 - 9223372036854775807; while($test > 0) { $test = $test - 9223372036854775807; } echo (int)$test; // -5857648805777768448

Комментариев нет:

Отправить комментарий