像:
float(1.2345678901235E + 19)=> string(20)“12345678901234567890”
可以吗?
(这是json_decode ...)
答案 0 :(得分:40)
echo number_format($float,0,'.','');
注意:这是针对整数的,对于额外的小数位数增加0
答案 1 :(得分:8)
$float = 0.123;
$string = sprintf("%.3f", $float); // $string = "0.123";
答案 2 :(得分:2)
默认情况下,json_decode
将大整数强制转换为浮点数。可以在函数调用中覆盖此选项:
$json_array = json_decode($json_string, , , 1);
我仅以主要文档为基础,所以请测试并告诉我它是否有效。
答案 3 :(得分:0)
双精度浮点数只能包含大约15位有效数字。你能做的最好的就是用零填充额外的数字。
答案 4 :(得分:0)
我通过为JSON_BIGINT_AS_STRING
参数传递参数options
解决了这个问题。
json_decode($json, false, 512, JSON_BIGINT_AS_STRING)
答案 5 :(得分:0)
解码浮点数而又不损失精度的唯一方法是遍历json并将所有浮点数用引号引起来。通过制作数字字符串。