php5升级到php7,thinkphp5
php7(PHP 7.3.2)的代码如下所示:
具体代码如下所示:
$redis_arr['money'] = 3708;
$moremoneyRes['money'] = 88.49;
$moneyData['money'] = bcadd($redis_arr['money'],$moremoneyRes['money'],2);
var_dump($moneyData['money']);
执行结果如下所示:
php5(PHP 5.4.39)的代码如下所示:
public function test2() {
$redis_arr['money'] = 3708;
$moremoneyRes['money'] = 88.49;
$moneyData['money'] = bcadd($redis_arr['money'],$moremoneyRes['money'],2);
var_dump($moneyData['money']);
}
运行结果如下所示:
$redis_arr['money'] = 3891.11和$moremoneyRes['money'] = 9.78也会有同样的问题。
解决方案用sprintf代替。
$moneyData['money'] = sprintf("%.2f",$redis_arr['money']+$moremoneyRes['money']);
PHP 7.3.2和PHP 5.4.39用bcadd函数有精度计算的差异。