number_format将以小数点后5位结束的数字四舍五入


number_format rounding up number that end with 5 decimal

有没有一种方法可以使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.

注意:我不是在问这个

不要使用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

目前还不清楚您想要实现什么。根据你关于"忽略"以五结尾的数字的评论,我模拟了一个非常基本的快速功能,可以实现

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()向下取整。