我在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吗?
答案 0 :(得分:0)
浮点数表示为十进制数的二进制近似值(有关如何存储它们的详细说明,请参阅此Wikipedia link)。正如您在示例中所看到的,它们“合理地接近”但不是所述十进制数的精确表示。因此,如果你将它与一个整数进行比较 - 这是它所包含的数字的精确表示 - 你可以得到很小的差异,如你所见。
为了比较浮点数,正确的技术通常是为比较添加“容差” - 而不是精确地比较两个数字,你检查一个是否落在另一个的小间隔内。间隔的小小取决于数量的大小。