PHP浮点数运算的问题解决

来源:互联网 发布:摄影作品网站 知乎 编辑:程序博客网 时间:2024/05/21 09:43

问题描述:

有用到这样段代码,就是两个浮点数相减

$this->discount = floatval($this->discount - $waybill['total_price']);  

其中$this->discount$waybill['total_price']都是浮点数,值为float(202.6),理论上应该得到0,程序得到的结果却是float(5.6843418860808E-14)

问题原因

这是由于PHP的浮点数精度计算问题,在PHP计算过程中其实有隐藏的小数。

解决方案

浮点数都用round()函数取相同位数的小数,然后再进行计算,如下:

$this->discount = floatval(round($this->discount,4) - round($waybill['total_price'],4));


0 0
原创粉丝点击