我期待number_format做一些不应该做的事情吗?

时间:2015-10-18 19:46:02

标签: php number-formatting

我有一个浮动:9.174599999999995

当我运行number_format(9.174599999999995,2)时,我得到9.17。我相信我应该获得9.18作为4轮到5轮然后7轮到8轮。这不对吗?如何达到9.18的预期效果?

4 个答案:

答案 0 :(得分:0)

这是因为number_format没有结束: http://php.net/manual/en/function.number-format.php

看看round功能: http://php.net/manual/fr/function.round.php

答案 1 :(得分:0)

嗯,你认为错了,正确的答案是9.17,因为舍入是在舍入点之后仅基于一位数进行的。 基本上当你用小数点后的9.174599999999995进行舍入时,你将它基于4舍入,小于5,所以数字四舍五入为9.17

答案 2 :(得分:0)

由于你可以使用php圆形。 例子:

$n=3.18925

$round=round($round, 1);

将显示3.2

$round=round($round, 2);

将显示3.19

答案 3 :(得分:0)

您的号码,

$number = 9.17499999999995 ;
echo $english_format_number = number_format($number, 2, '.', '');
9.17

$number = 9.17599999999995 ;
echo $english_format_number = number_format($number, 2, '.', '');
9.18

并且通过使用number_format 2次可以实现期望结果

$number = 9.17499999999995 ;
echo $number = number_format($number, 3, '.', '');
echo "<br>";
echo $english_format_number = number_format($number, 2, '.', '');  

RESULTS    
    9.175
    9.18