栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PHP7.1 json_encode()浮动问题

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP7.1 json_encode()浮动问题

这让我有点发疯,直到我终于找到此错误,该错误将您指向此RFC,其中说

当前

json_enpre()
使用设置为14的EG(精度)。这意味着最多使用14位数字来显示(打印)该数字。IEEE 754
double支持更高的精度,并且
serialize()
/
var_export()
使用默认设置为17的PG(serialize_precision)更加精确。由于
json_enpre()
使用EG(precision),因此
json_enpre()
即使PHP的float可以持有更精确的float值,也除去了小数部分并破坏了原始值。

和(强调我的)

该RFC建议引入一个新设置EG(precision)=-1和PG(serialize_precision)=-1,该设置使用zend_dtoa()的模式0,该模式使用更好的算法对舍入浮点数进行取整(-1用于指示0模式)

简而言之,有一种使PHP 7.1

json_enpre
使用新的和改进的精度引擎的新方法。在 php.ini中,
您需要更改
serialize_precision

serialize_precision = -1

您可以验证它是否可以在此命令行下使用

php -r '$price = ["price" => round("45.99", 2)]; echo json_enpre($price);'

你应该得到

{"price":45.99}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/615401.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号