Есть ли способ сделать number_format, чтобы не округлять числа, которые заканчиваются десятичной дробью?
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()
использовать круглый функция. Вы можете указать, как вы хотите его округлить.
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);
}
Этот пример для версий PHP, которые не поддерживают предпочтительный метод round(26.25, 1, PHP_ROUND_HALF_DOWN)
, Приведенный выше пример вычтет 0.1
от числа, таким образом, заставляя number_format()
округлить.