你最近在做什么加减
运算的问题是有一个不精确的浮点运算。它似乎说,解释
语言确实存在浮点运算的问题。
首先,看一段代码:
< PHP
$ = 0.1;
$ = 0.7;
var_dump(($ + $ B)= = 0.8);
打印值为布尔false。
这就是为什么PHP手册有以下浮点数的警告信息:
警告
浮点数精度
很显然,一个简单的小数,如0.1或0.7,不能
转换成一个内部二进制格式而不会丢失一点精度,这将造成混乱:例如,(0.1 + 0.7)* 10通常返回7,而不是8,因为结果的内部表示类似于7.9999999999。
这与一个事实,即不可能准确地表示有限小数位数的小数部分。例如,十进制1 3变成0 3333333…
所以千万不要相信浮点数的结果是精确到最后的,永远不要比较两个浮点数是否相等,如果你需要更高的精度,你应该使用任何精确的数学
函数或GMP函数。
那么上述公式应改写为< PHP美元= 0.1;$ B = 0.7;var_dump(bcadd($,$,2)= = 0.8);这可以
解决计算浮动点的问题。
以上是PHP给您带来的浮点
操作的全部内容。我希望你能
支持得更多。