PHP中的json_decode和E数字

时间:2014-01-01 13:47:51

标签: php json

我已经尝试过在其他线程中给出的解决方案,但遗憾的是还没有找到解决方案。

我正在检索的json是:

{"foo": [
        {"coo": "2013-01-01 13:42:21",
            "moo": 0.00008200,
        }
    ]
}

我使用以下代码来解析它:

$jsonString=preg_replace('/([^\\\])" *: *([0-9]{10,})(,|})/', '$1":"$2"$3', $jsonString);

$jsonString=json_decode($jsonString, true);

但是,moo的值显示为:8.02E-5

我该怎么做才能纠正这个问题?

2 个答案:

答案 0 :(得分:3)

当你超过可以在php配置选项中设置的浮点精度限制时,PHP使用科学记数法。

尝试添加:

ini_set('precision',20);
例如,

将浮点精度限制更改为20。

答案 1 :(得分:3)

您可以使用sprintf()

<?php
$json='{"foo":
    [
    {   "coo": "2013-01-01 13:42:21",
        "moo": 0.00008200
    }
    ]
}';

$jsonString=json_decode($json, true);
echo sprintf('%.6f', $jsonString['foo'][0]['moo']);// "prints" 0.000082