2013-07-01 32 views
0

我有整的问题,并漂浮在PHP:/
我的代码:整数=浮动100 = 100.00

$dif =floatval($sum)-floatval($this->row_array[$row][$col]); 
echo $dif; 

$sum是100
$this->row_array[$row][$col]是100.00
$dif是-1.4210854715202 E-14!
你知道为什么$dif不是0吗?

回答

0

浮点数表示为十进制数的二进制近似值(有关深入说明如何存储它们,请参阅此Wikipedia link)。正如你可以在你的例子中看到的那样,它们“相当接近”,但并不是所述十进制数的精确表示。因此,如果您再将其与一个整数进行比较 - 这是它所包含数字的精确表示 - 您可以得到很小的差异,如您所见。

要比较浮点数,正确的技巧通常是为比较添加一个“容差” - 而不是精确地比较两个数字,然后检查一个数值是否在另一个的小间隔内。一个时间间隔取决于数量的大小。

+0

谢谢!我现在将两个值都舍入;) – Wikunia

+0

如果要在比较之前舍入,则只需将浮点值四舍五入。 –