<?php $int = 1968401665333658496; echo json_encode( array("$int",$int) ); ?>
Получено в браузере: [ "1968401665333658496" , 1968401665333658600 ]
Это «округляет» мое целое число?
PHP_INT_MAX = 9223372036854775807 ~ PHP Version 5.3.2-1ubuntu4.7
: PHP_INT_MAX = 9223372036854775807 ~ PHP Version 5.3.2-1ubuntu4.7
Нет проблем с этими огромными целыми числами в любом месте (PHP, MySQL или Javascript)
– до тех пор, пока json_encode(
) не заткнет его (бесшумно btw ..)
Javascript не имеет понятия целых чисел, в соответствии со стандартом все числа являются двойными значениями IEEE, что означает, что у них есть 52 бит мантиссы. это приводит к практическому максимальному «целочисленному» значению 2^53
до потери точности.
Я не уверен, как у вас не было проблем с числами, которые были большими в JS, – если вы не выполнили свою JS-реализацию, это не соответствует стандартам.
Это не просто проблема JSON. Если вы положите
alert(1968401665333658496);
в консоли firebug вы получите 1968401665333658600
Вероятно, вы попадаете в значение JS max.
Здесь обсуждается следующее: Что такое высочайшее целочисленное значение JavaScript, с которым число может идти без потери точности?
Отправьте свое целочисленное значение и обработайте конверсию на клиенте.