为什么 PHP 在浮点运算中优于 Javascript?

Wy PHP is better than Javascript in Floating point Arithmetic?

PHP

<?php echo (-9.341+2.111);

结果-7.23

Javascript

console.log(2.111-9.341)

结果-7.229999999999999

我知道浮动算术,但为什么原版 PHP 给出准确答案而 Javascript(在 Google Chrome 控制台上测试)却没有?

四舍五入是php的echo:

var_dump(sprintf('%.20f', -9.341+2.111)); // string(23) "-7.22999999999999864997"

php sources 中,echo 会使用以下转换将浮点数转换为字符串:

str = zend_strpprintf(0, "%.*G", (int) EG(precision), dval);

这基本上意味着科学计数法或 %f(请参阅 precision 配置指令,默认为 14)。