number_format округление числа до 5 десятичных

Есть ли способ сделать 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.

Примечание: я не спрашиваю этот

-1

Решение

Вместо того, чтобы использовать 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
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() округлить.

1

По вопросам рекламы [email protected]