当其他语言失败时,为什么PHP会计算0.1 + 0.2?

时间:2015-11-15 23:02:30

标签: php floating-point

Is floating point math broken?中所述,0.1 + 0.2在大多数编程语言中评估为0.30000000000000004

然而,PHP,大概是由于是所有编程语言中最好的,能够正确计算0.1 + 0.2:

php > echo 0.1 + 0.2;
0.3
php > var_dump(0.1 + 0.2);
float(0.3)

然而,尽管上面显示了输出,但是0.1 + 0.2!= 0.3:

php > var_dump(0.1 + 0.2 == 0.3);
bool(false)

这里发生了什么?

1 个答案:

答案 0 :(得分:11)

PHP具有precision配置值,用于设置浮点数中显示的有效位数。默认情况下为14,这是0.1 + 0.2显示为0.3的原因。

但是,如果你这样做:

ini_set('precision', 17);
echo 0.1 + 0.2;

你得到0.30000000000000004