我在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吗?
浮点数表示为十进制数的二进制近似值(有关如何存储浮点数的详细说明,请参阅此维基百科链接)。正如您在示例中看到的,它们"相当接近",但不是所述十进制数的精确表示。因此,如果你把它与一个整数进行比较——这是它所包含数字的精确表示——你可以得到小的差异,正如你所看到的。
要比较浮点数字,正确的技术通常是在比较中添加"公差"——不是精确比较两个数字,而是检查其中一个数字是否与另一个数字的间隔很小。间隔的大小取决于数字的大小。