长沙网站开发:在PHP中使用浮点值时的注意事项

善微科技 于 2019 年 03月12日 发布

到目前为止,我们已经看到了为什么在PHP中使用float值时会发生这种奇怪的行为。现在来看看我们如何在PHP中处理这些浮点值。

比较PHP中的浮点值

首先,我们将看到如何在比较浮点值的同时陷入浮动值的陷阱。我们将通过代码示例以更好的方式理解这一点。请参考下面的几个代码块来检查相同:

1 
2 
3 
4
$ a = 5.69 ; 
$ b = 5.69 ; 
var_dump ($ a == $ b ); 
//输出:bool(true)

在上面的代码块中,我们可以看到两个值都相同并给出了正确的结果。现在让我们检查PHP中比较float值的棘手部分。

1 
2 
3 
4
$ a = 5.63 + 0.06 ; 
$ b = 5.69 ; 
 var_dump ($ a == $ b ); 
//输出:bool(false)

解

在比较浮点值时,快速简单地解决此问题的方法是将其转换为字符串并比较这些值。现在它将比较两个字符串,它没有任何精度错误。

1 
2 
3 
4
$ a = (字符串) (5.63 + 0.06 ); 
$ b = (字符串) 5.69 ; 
 var_dump ($ a == $ b ); 
//输出:bool(true)

如果您认为(像我一样)转换为字符串会给我们一个正确的结果。但不是理想的解决方案,那么下一个解决方案就是为您服务。

要获得上述问题的解决方案,我们需要安装PHP的BCMath PHP扩展。您可以阅读本文,了解如何在PHP中安装PHP BCMath。

完成BCMath扩展安装后,可以使用下面的代码并获得正确的结果。我们将使用bcadd方法而不是直接求和。

1 
2 
3 
4
$一个 = bcadd (5.63 , 0.06 , 2 ); 
$ B = bcadd (5.69 , 0 , 2 ); 
 var_dump ($ a == $ b ); 
//输出:bool(true)

让我们看看同一种情况的另一个例子:


如没特殊注明,文章均为善微网络原创,转载请注明来自https://www.sanways.com/news/478.html