2014-11-23 2 views
0

Короткий рассказ, вот мой код:Имея проблему преобразования с плавающей точкой в ​​целое число (PHP)

var_dump($recentGame->createDate); 
var_dump((int) $recentGame->createDate); 

производит следующий вывод:

float 1416772859827 
int -566347853 

Почему выход typecasted выход не так:

int 1416772859827 
+1

Посмотрите на пределы для целых чисел с 32-битным PHP –

+1

** Максимальное значение зависит от системы. 32-битные системы имеют максимальный знаковый целочисленный диапазон от -2147483648 до 2147483647. Так, например, в такой системе intval ('1000000000000') вернет 2147483647. Максимальное знаковое целочисленное значение для 64-битных систем - 9223372036854775807. ** http://php.net/manual/en/function.intval.php –

+0

Так что же такое createDate представляет собой целое число? Это не стандартная временная метка unix? –

ответ

1

Цитируя PHP docs:

Размер целого числа зависит от платформы, хотя максимальное значение около двух миллиардов - это обычное значение (это 32 бита). 64-разрядные платформы обычно имеют максимальное значение около 9E18, за исключением Windows, которая всегда 32 бит. PHP не поддерживает целые числа без знака. Целочисленный размер может быть определен с использованием константы PHP_INT_SIZE и максимального значения с использованием константы PHP_INT_MAX с PHP 4.4.0 и PHP 5.0.5.

Смежные вопросы