想在输出的 json 里 输出 float 数据,可发现 浮在均衡中的一台机器 不论怎么操作都丢失精度 eg
echo json_encode([
'x'=>1.71,
'xx'=>3.45,
'xxx'=>2.59,
'xxxx'=>2.47,
'xxxxx'=>0.01,
]);
有问题的机器
{"x":1.71,"xx":3.4500000000000002,"xxx":2.5899999999999999,"xxxx":2.4700000000000002,"xxxxx":0.01}
其他机器输出
{
"x": 1.71,
"xx": 3.45,
"xxx": 2.59,
"xxxx": 2.47,
"xxxxx": 0.01
}
也尝试了
function priceFormat($num)
{
return (float)sprintf("%.2f",$num);
}
function priceFormat($num)
{
return floatVal(sprintf("%.2f",$num));
}
都不行
有人知道是什么原因吗
1
jfcherng 2019-01-24 10:20:33 +08:00 1
|
2
jfcherng 2019-01-24 10:22:29 +08:00
可能的解決方法, php.ini 設定 serialize_precision = -1
|
3
183387594 OP @jfcherng 谢谢,解决了 是这个问题 serialize_precision
两个 php 的安装方式不一样 .ini 的 默认参数不同 |
4
jfcherng 2019-01-24 10:23:52 +08:00
ini_set('serialize_precision', -1); 在我這裡工作正常
|