整数!=浮点数100!= 100.00

时间:2013-07-01 17:37:40

标签: php integer

我在PHP中遇到整数和浮点数的问题:/
我的代码:

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

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

1 个答案:

答案 0 :(得分:0)

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

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