喜欢:
float(1.2345678901235E+19) => string(20) "12345678901234567890"
可以做吗?
(用于 json_decode...)
echo number_format($float,0,'.','');
注意:这是针对整数的,对于额外的小数位增加 0
$float = 0.123;
$string = sprintf("%.3f", $float); // $string = "0.123";
json_decode
默认情况下将大整数转换为浮点数。该选项可以在函数调用中被覆盖:
$json_array = json_decode($json_string, , , 1);
我仅基于主要文档,因此请测试并告诉我它是否有效。
双精度浮点数只能包含大约 15 位有效数字。您能做的最好的事情就是用零填充多余的数字。
我通过为
JSON_BIGINT_AS_STRING
参数传递参数 options
解决了这个问题。
json_decode($json, false, 512, JSON_BIGINT_AS_STRING)
在不损失精度的情况下解码浮点数的唯一方法是遍历 json 并将所有浮点数用引号括起来。通过制作数字字符串。
我经常使用:
$v = float(1.2345678901235E+19);
$s = "{$v}";
不确定是否有任何相关的“陷阱”,但它通常对我有用。