PHP:number_format舍入

嗨,我一直有一个问题将数字四舍五入到-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)

如果这是一个问题,你可以添加0以​​避免这种“魔力”:

PHP5 -r 'var_dump((float)0*-1+0);'
float(0)

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...