$data['balance']=0.09;
$data['intransitba']=0.01;
$data['totalbalance']=$data['balance']+$data['intransitba'];

打印出来
Array ( [balance] => 0.09 [intransitba] => 0.01 [totalbalance] => 0.1 )
{"balance":0.09,"intransitba":0.01,"totalbalance":0.09999999999999999}
json_encode 后数据就会涌现精度问题
找下缘故原由
首先剖析
1、由于做事器有两个php版本,再老的版本上同样的代码是可以的
以是疑惑和php版本高了有关系
找缘故原由
PHP 7.1.x在编码双精度值时开始利用代替精度。由于从精度到serialize_precision用法的变革。
PHP7.1后php.ini里的serialize_precision默认为17,低于15就会避免问题发生。
办理办法:
1、ini_set('serialize_precision', 14);
ini_set('precision', 14);
2、利用round 规范返回精度round( $data['intransitba']+$data['balance'], 2 );