尝试使用 PHP 7.0.21 中的 json_decode 函数解码 JSON 时遇到问题。我可以用这些代码行来复制这个问题:
代码:
<?php
$inputJSON = '{"value":0.00000883}';
$outputJSON = json_decode($inputJSON);
print_r($outputJSON);
输出:
stdClass Object
(
[value] => 8.83E-6
)
我还尝试更改ini_set('precision', 8);
不会改变输出的精度。
我在网上找到的唯一修复是正则表达式替换,它将数字更改为字符串,但这是一个技巧和一个很好的解决方案。我不想将所有浮点数更改为字符串。
为什么会发生这种情况,以及如何在不增加大量开销的情况下正确解决此问题,例如使用number_format
. json_decode 中的解析是否简单地中断了?
您可以使用number_format删除 ,e-6
以便您可以在数据库中正确存储;
<?php
$inputJSON = '{"value":0.00000883}';
$outputJSON = json_decode($inputJSON);
$formatted = number_format($outputJSON->value,8);
print_r($formatted);
输出:0.00000883
虽然,我很确定 MySQL 应该8.83E-6
作为输入处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句