有没有一种方法可以使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()
向下取整。