📜  比较PHP的浮点值

📅  最后修改于: 2022-05-13 01:54:11.489000             🧑  作者: Mango

比较PHP的浮点值

在PHP,浮动值的大小取决于平台。由于浮点数的内部表示,在执行或测试浮点值是否相等时可能会出现意外输出。例如,请参阅以下程序。

PHP


PHP


PHP


输出:
False

说明:这段代码的输出是 False,这是非常不可预测的,但在PHP,value1 不完全是 1.6,即它来自 8 和 6.4 之间的差异,实际上结果是 1.599999,这就是为什么这个语句被证明是错误的.

如何解决以上问题?
方法 1:对于浮点值的相等性测试,使用机器 epsilon 或者我们可以称之为计算机系统中计算的最小差异。

方案一:



PHP


输出:
True

说明:在此代码中,使用两个浮点数value1value2以及epsilon 。现在使用名为abs()的预定义函数值(value1 和 value2)的绝对差值。这段代码将给出绝对值,但问题是我们为什么要取绝对值。可以看到这两个值的小数点后位数相同,精度值都为7。这对系统进行比较分析是非常困难的。

方法二:我们可以在PHP使用round函数。

PHP


输出:
bool(true)