0

我对 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吗?

4

1 回答 1

0

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

要比较浮点数,正确的技术通常是在比较中添加“容差”——不是精确比较两个数字,而是检查一个数字是否落在另一个数字的小区间内。间隔有多小取决于数字的大小。

于 2013-07-01T17:40:56.860 回答