Я извлекаю данные из базы данных JSON, которая хранит время в unix-эпоху, но по какой-то причине числа плавают, когда я их вытаскиваю. Это то, с чем мне никогда не приходилось сталкиваться раньше. Так что обычно число, например 1293083730000
появляется как 1.293085408E+12
Мне нужно вернуть номер в эпоху, чтобы сравнить его с текущим временем. Любая помощь будет большой.
Это инженерная нотация , удобный способ написания больших чисел. Число по-прежнему является целым числом.
Проблема в том, что внутренние типы PHP слишком малы, чтобы представить число как десятичное, см. Следующий пример:
<? $i = 1293083730000; echo "\$i is $i\n\n"; echo sprintf("\$i is %d\n\n", $i); echo sprintf("\$i is %e\n\n", $i); ?>
Эти результаты:
$i is 1293083730000 $i is 298573904 $i is 1.293084e+12
Вам нужна либо 64-битная платформа, либо работа с номером в виде строки или значения с плавающей запятой. Дополнительную информацию см. В документации по PHP для целых чисел:
В файле конфигурации php.ini
есть значение 'precision'
.
Он просто определяет, сколько цифр будет отображаться в номере с плавающей точкой.
Дополнительная информация в руководстве по PHP
Вы можете увеличить значение точности и повторите попытку.