输出 float 数据的问题

2019-01-24 10:02:27 +08:00
 183387594

想在输出的 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));
}

都不行

有人知道是什么原因吗

2972 次点击
所在节点    PHP
4 条回复
jfcherng
2019-01-24 10:20:33 +08:00
jfcherng
2019-01-24 10:22:29 +08:00
可能的解決方法, php.ini 設定 serialize_precision = -1
183387594
2019-01-24 10:23:26 +08:00
@jfcherng 谢谢,解决了 是这个问题 serialize_precision
两个 php 的安装方式不一样 .ini 的 默认参数不同
jfcherng
2019-01-24 10:23:52 +08:00
ini_set('serialize_precision', -1); 在我這裡工作正常

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/530085

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX