integer != float 100 != 100.00

  • 本文关键字:float integer php integer
  • 更新时间 :
  • 英文 :


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

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

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

浮点数表示为十进制数的二进制近似值(有关如何存储浮点数的详细说明,请参阅此维基百科链接)。正如您在示例中看到的,它们"相当接近",但不是所述十进制数的精确表示。因此,如果你把它与一个整数进行比较——这是它所包含数字的精确表示——你可以得到小的差异,正如你所看到的。

要比较浮点数字,正确的技术通常是在比较中添加"公差"——不是精确比较两个数字,而是检查其中一个数字是否与另一个数字的间隔很小。间隔的大小取决于数字的大小。

最新更新