数码资讯
PHP下浮点不精确的解决方案
你最近在做什么加减运算的问题是有一个不精确的浮点运算。它似乎说,解释语言确实存在浮点运算的问题。 首先,看一段代码: < PHP $ = 0.1; $ = 0.7; var_dump(($ + $ B)= = 0.8); 打印值为布尔false。 这就是为什么PHP手册有以下浮点数的警告信息: 警告
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
你最近在做什么加减运算的问题是有一个不精确的浮点运算。它似乎说,解释语言确实存在浮点运算的问题。
首先,看一段代码:
< 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给您带来的浮点操作的全部内容。我希望你能支持得更多。
首先,看一段代码:
< 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给您带来的浮点操作的全部内容。我希望你能支持得更多。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。