PHP - 使用 json_decode 浮点数错误精度

约翰·莫

尝试使用 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 中的解析是否简单地中断了?

这是Javascript

您可以使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章