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

posted on 2023-07-18 15:40  春分夏至  阅读(28)  评论(0编辑  收藏  举报

导航