PHP浮点数运算的问题
$a = 0.1;
$b = 0.7;
$c = 0.5;
$d = 0.9;
if ($a + $b == 0.8) {echo '==';} else {echo '!=';} // !=
if ($a + $c == 0.6) {echo '==';} else {echo '!=';} // ==
if ($a + $d == 1) {echo '==';} else {echo '!=';} // ==
if ($b + $c == 1.2) {echo '==';} else {echo '!=';} // ==
防坑攻略
1) 通过乘100的方式转化为整数加减,然后在除以100转化回来……
2) 使用number_format转化成字符串,然后在使用(float)强转回来……
3) php提供了高精度计算的函数库,实际上就是为了解决这个浮点数计算问题而生的。
4)任意精度数学函数
对于任意精度的数学,PHP 提供了支持用字符串表示的任意大小和精度的数字的二进制计算。
BCMath:BC 是 Binary Calculator 的缩写。
官方手册:http://php.net/manual/zh/book.bc.php
大家在使用前,请先确认是否已安装 bcmath
参考地址: https://www.cnblogs.com/hld123/p/14848530.html