Скрыть нули из sprintf

С бд получаю разные числа, например число 1 будет 10150.20000 и число 2 будет 0.00002312. Чтобы убрать нули я использовать round($number, 2), но в таком случае второе число выводиться как 0.00, поэтому попробовать выводить так sprintf("%.8f", $number), но в таком случае первое число выводиться со всеми нулями после запятой. Вопрос: как вывести числа так, что бы в первом числе, нули убирались и было только 10150.2, и в то же время второе число выводилось целиком 0.00002312?


Ответы (1 шт):

Автор решения: Алексей Шиманский

Если всё это строки (что по мне, так странно, но исходя из условия по-другому и не может быть), то достаточно удалять нули у строки.

$number = '10150.20000';
echo rtrim($number, "0");

echo "\n";

$number = '0.00002312';
echo rtrim($number, "0");

// Output
10150.2
0.00002312

Другой вариант, но схожий

function specialFormat($number,  $decimals = 8) {
    return rtrim(rtrim(number_format($number, $decimals, '.', ''), '0'), '.');
}

$number = '10150.20000';
echo specialFormat($number);

echo "\n";

$number = '0.00002312';
echo specialFormat($number);

// Output
10150.2
0.00002312
→ Ссылка