我有一个简单的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位小数。
这个问题的原因是什么,我应该如何解决?
答案 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);