number_format舍入以5位小数结尾的数字

时间:2014-10-25 19:28:22

标签: php number-formatting

有没有办法让number_format不会对最终以" 5"小数?

echo number_format(25.58,1); // 25.6 - OK 
echo number_format(85.72,1); // 85.7 - OK 
echo number_format(26.25,1); // 26.3 - WHY? 26.2 needed here.

注意:我没有问this

2 个答案:

答案 0 :(得分:2)

而不是使用number_format()使用round功能。您可以指定希望它如何舍入。

echo round(25.58, 1, PHP_ROUND_HALF_DOWN); // 25.6
echo round(85.72, 1, PHP_ROUND_HALF_DOWN); // 85.7
echo round(26.25, 1, PHP_ROUND_HALF_DOWN); // 26.2

答案 1 :(得分:1)

目前还不清楚你想要达到的目标。根据您对“忽略”的评论以五个结尾的数字我已经嘲笑了一个非常基本的快速函数来完成这个

echo format_numbers(25.58,1); // 25.6 
echo format_numbers(85.72,1); // 85.7 
echo format_numbers(26.25,1); // 26.2 

function format_numbers($number, $decimal)
{
    if(substr($number, -1) == '5'){
        $number = $number - 0.1;
    }
    return number_format($number, $decimal);

}

此示例适用于不支持round(26.25, 1, PHP_ROUND_HALF_DOWN)首选方法的PHP版本。上面的示例会从数字中扣除0.1,从而迫使number_format()向下舍入。