使用 json_encode 函数造成浮点类型数据出现精度问题

后端 2019-02-26

在使用过程中发现 浮点类型 数据经过 json_encode 之后会出现精度问题
提交的数据

{
    "pointarr": [
        [121.39906525611879, 31.170743912433334],
        [121.40255749225618, 31.171859263671436]
    ]
}

经过json_encode处理后返回的数据

{
    "pointarr": [
        [121.39906525612, 31.170743912433],
        [121.40255749226, 31.171859263671]
    ]
}

简单点的方式将获取的数组中的数据转换为string类型,然后再使用json_encode返回。

function float2string($arr)
    {
        $newarr = array();
        foreach ($arr as $one) {
            $onearr = array(
                (string)$one[0],(string)$one[1]
            );
            $newarr[] = $onearr;
        }
        return json_encode($newarr);
    }