嗨,我一直有一个问题将数字四舍五入到-0而不是一个0
码:
<?PHP $num= 0.000000031; $round = number_format((float)$num,1,'.',''); echo $round * -1; ?>
输出:
-0
预期产量:
0
我一直在寻找任何解决方案,但没有找到.
善意解释&帮助我为什么它会向上舍入到-0而不是0?谢谢
舍入不是-0.
$round变量在最后一行之前包含这个:
string(3) "0.0"
您可以通过添加以下行来验证这一点:
var_dump($round);
在回声之前.
因此,如果将“0.0”(字符串)乘以-1,则结果将为“-0”
因为(字符串)0在乘法之前被转换为(float)0
(float)0 * -1 = -0 PHP5 -r 'var_dump((float)0*-1);' float(-0)
基于浮点数行为,这是完全正常的. (更多细节:http://en.wikipedia.org/wiki/Signed_zero)
PHP5 -r 'var_dump((float)0*-1+0);' float(0)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。