解决方法:
修改php.ini里的serialize_precision的值为-1 即可;然后重启下开发环境

serialize_precision = -1

事情起因:
在用laravel开发接口时,发现数据库中的数据是3.9,但“return success($price);”时却是返回“3.8999999999999999”;

$price = 3.9;
return success($price);//输出3.8999999999999999

这个就出现了精度问题,但使用laravel自带的dd方法后,发现

$price = 3.9;
dd($price);//输出3.9

由此可以判断是return 的时候,json_encode出的问题,于是以下代码验证

$price = 3.9;
echo json_encode($price);//输出3.8999999999999999

于是搜索了很多半天,才找到了解决方法。我本地的serialize_precision值是17,需要改成 -1;然后重启开发环境后,再次输入以下代码

$price = 3.9;
echo json_encode($price);//输出3.9

感谢以下文章的作者分享他的内容,我的问题才得以解决。

https://blog.csdn.net/moliyir...


willeny
144 声望3 粉丝