Page

【PHP】php 7.1 json_encode 浮点数溢出解决

768Anson20-05-27


php 7.1 json_encode 浮点数溢出解决

新项目用的 php 7.1.13 版本,在使用过程中发现 浮点类型 数据经过 json_encode 之后会出现精度问题。

举个例子:

$data = [

'stock' => '100',

'amount' => 10,

'price' => 0.1

];

var_dump($data);

echo json_encode($data);

输出结果:

array(3) {

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

["amount"]=> int(10)

["price"]=> float(0.1)

}

{

"stock":"100",

"amount":10,

"price":0.10000000000000001

}


解决方法:


一、修改配置

ini_set('serialize_precision', 14);

ini_set('precision', 14);

https://my.oschina.net/shunshun/blog/4513260


二、使用bcmath扩展处理浮点数加减

$a = "0.1";

$b = "0.1";

$c = bcadd($a, $b, 2);

$a = "1";

$b = "0.1";

$c = bcadd($a, $b, 2);

var_dump(floatval($c));

https://www.php.net/manual/zh/function.bcadd.php





来自anson博客 

http://www.tp0.top