PHP7中json_encode浮点数精度问题

实例:

$data = [
'number' => '100',
'price' => 0.1
];


var_dump($data);
echo json_encode($data);


// output

array(3) { 

    ["number"]=> string(3) "100" 

    ["price"]=> float(0.1) 

}


{
"number":"100",
"price":0.10000000000000001
}

解决方法:

调整 php.iniserialize_precision 的值(序列化精度) 为 -1 或 直接在代码入口中配置

// PHP代码配置
ini_set('serialize_precision', -1);

注意php.ini中还有一个配置是 precision默认值是 14,这个配置是控制 round()、pi() 等 Math 相关的函数精度。

Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注