Ответ 1
echo number_format($float,0,'.','');
note: это для целых чисел, увеличение 0 для дополнительных дробных цифр
Как
float (1.2345678901235E + 19) = > строка (20) "12345678901234567890"
Можно ли это сделать?
(это для json_decode...)
echo number_format($float,0,'.','');
note: это для целых чисел, увеличение 0 для дополнительных дробных цифр
$float = 0.123;
$string = sprintf("%.3f", $float); // $string = "0.123";
Получается json_decode
по умолчанию отличает большие целые числа как float. Этот параметр может быть перезаписан в вызове функции:
$json_array = json_decode($json_string, , , 1);
Я основываю это только на основной документации, поэтому, пожалуйста, проверьте и сообщите мне, если это сработает.
Число с плавающей запятой с двойной точностью может содержать только около 15 значащих цифр. Лучшее, что вы могли бы сделать, это дополнительные цифры с нулями.
Я решил эту проблему, передав аргумент JSON_BIGINT_AS_STRING
для параметра options
.
json_decode($json, false, 512, JSON_BIGINT_AS_STRING)
См. пример № 5 в документации json_decode