PHP舍入给出00作为答案

时间:2015-11-13 06:29:39

标签: php

我有一个简单的PHP,它意味着将浮动数字舍入到5位小数,但我得到一个奇怪的结果是00

这是我的代码:

$sum = (2*pi()) / (rand(5,10)*(0+1)*60*60*1000);
echo $sum.'<br/>';
echo round($sum,5);

结果如下:

2.90888208666E-7
00

我将假设这是round()的预期行为,但我不确定如何解决问题,因此我可以将数字设为5位小数。

这个问题的原因是什么,我应该如何解决?

1 个答案:

答案 0 :(得分:6)

您有5位小数的数字。 2.90888208666E-7非常小(最后E-7可以告诉你,在小数点后五位,它会变为0。

最后的E-7实际上有意义!这是一种说2.90888 * pow(10, -7)2.90888 * 0.000001的方式。请参阅"Number with E" on Math.StackExchange"E-Notation" on Wikipedia

所以,你拥有的数字是0.000000290888208666,(给予或取零;))。这个数字非常小,如果你舍入到5位小数就会变成0。

此外,浮点数仍然是浮点数,如果您回显浮点数,则不会显示不相关的零。 要显示它们,您需要将数字格式化为字符串,并告诉PHP您想要多少小数。您可以使用number_format

$output = round($sum, 5);
echo number_format($output, 5);