受二进制浮点数精度影响 金额在计算过程中0.3元变成0.2999.....这种格式的时候
有以下方式
1.使用高精度函数,http://php.freehostingguru.com/group.php-5.php
2.对相应的小数转整数再转小数处理
thinkphp输出json时候 数据的精度出现问题,处理函数如下
/**
* @param $data 需要处理的数据
* @param int $precision 保留几位小数
* @return array|string
*/
function fix_number_precision($data, $precision = 2)
{
if(is_array($data)){
foreach ($data as $key => $value) {
$data[$key] = fix_number_precision($value, $precision);
}
return $data;
}
if(is_numeric($data)){
$precision = is_float($data) ? $precision : 0;
return number_format($data, $precision, '.', '');
}
return $data;
}
3.对系统精度进行设置
1.修改php.ini文件
2. php上设置 17位以内的精度
ini_set('serialize_precision',16);/*设置浮点数精度为16位*/