Конвертировать float в строку в php? - PullRequest
19 голосов
/ 29 июля 2011

Как:

float (1.2345678901235E + 19) => string (20) "12345678901234567890"

Можно ли это сделать?

(это для json_decode ...)

Ответы [ 5 ]

40 голосов
/ 29 июля 2011
echo number_format($float,0,'.','');

примечание: это для целых чисел, увеличение 0 для дополнительных дробных цифр

9 голосов
/ 11 января 2014
$float = 0.123;
$string = sprintf("%.3f", $float); // $string = "0.123";
2 голосов
/ 29 июля 2011

Оказывается, json_decode по умолчанию приводит большие числа к числу с плавающей точкой.Эта опция может быть перезаписана при вызове функции:

$json_array = json_decode($json_string, , , 1);

Я основываю это только на основной документации, поэтому, пожалуйста, протестируйте и дайте мне знать, если она работает.

0 голосов
/ 14 апреля 2014

Я решил эту проблему, передав аргумент JSON_BIGINT_AS_STRING для параметра options.

json_decode($json, false, 512, JSON_BIGINT_AS_STRING)

См. Пример № 5 в документации json_decode

0 голосов
/ 29 июля 2011

Число с плавающей запятой двойной точности может содержать только около 15 значащих цифр. Лучшее, что вы можете сделать, это добавить дополнительные цифры нулями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...