#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
Комментариев нет:
Отправить комментарий