为什么 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)。
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)。