2016-02-21 5 views
0

Я пытаюсь отформатировать конкретные числа до 8 десятичных знаков, удалив ненужные нули.Формат десятичного числа в PHP

Мой фактический код:

rtrim(sprintf("%.8f", $upto_eight_decimals), '0') 

Это фактически предотвращает форматировать число как 0.00012 в 1.2E-4 или 0.00012000

Однако, с числами целого числа, такие как 1 он преобразуется в 1. но этот момент не является моим ожидаемым результатом (я знаю, потому что rtrim удаляет все нули).

UPDATE:rtrim(rtrim(sprintf("%.8f", $upto_eight_decimals), '0'), '.') это выглядит как работа

+0

попробуйте следующее: - 'number_format ((float) $ upto_eight_decimals, 8, '.', '');' –

+0

Можете ли вы показать, что вы на самом деле имеете в виду, предоставляя некоторые входные данные и требуемые выходы. Только так мы можем перестать гадать, какую проблему вы пытаетесь решить. – RiggsFolly

+0

Я добавил свой новый рабочий код, но я не уверен, что это хороший метод. Я хочу удалить все ненужные нули, избежать форматирования float (например, 1.2E-4), а в случае целого числа (например, 1) удалить конечную точку (например, 1.) – supermoney

ответ

1

Вы можете сделать это таким образом, просто используйте number_format:

$upto_eight_decimals = "0.0001200"; 
$out = number_format((float)$upto_eight_decimals, 8, '.', ''); 

echo preg_replace("/\.?0*$/",'',$out); 
or 
echo $out + 0; 

Эта функция возвращает строку.

Это будет работать для вас, дайте мне знать, это работа или нет.

+0

Результат: 0.00012000. Эти нули не нужны. – supermoney

+0

теперь проверьте его, теперь ненужные нули удаляются с выхода. –

+1

Прохладный! Похоже, он работает. Я сохраню его в заметке, но тем не менее я буду использовать свой собственный код, потому что мне это нужно в 1 строке только для многоцелевого использования на HTML-страницах. Спасибо! – supermoney

Смежные вопросы