长沙网站开发

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

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

比较PHP中的浮点值

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




4
$ a 5.69 
$ b 5.69 
var_dump $ a == $ b 
//输出:bool(true)

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




4
$ a 5.63 0.06 
$ b 5.69 
 var_dump $ a == $ b 
//输出:bool(false)

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




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

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

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

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




4
$一个 bcadd 5.63  0.06  
$ B bcadd 5.69   
 var_dump $ a == $ b 
//输出:bool(true)

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