Как показать ноль до десятичной точки в БК?


9
echo "scale=3;1/8" | bc

показывает .125на экране. Как показать, 0.125если выходной результат меньше единицы?

Ответы:


9

bcне может выводить ноль до десятичной точки, вы можете использовать printf :

$ printf '%.3f\n' "$(echo "scale=3;1/8" | bc)"
0.125

Более удобочитаемая команда. ;-)
Кевин Донг

1

Вы можете трубку в awk

echo "scale=3;1/8" | bc | awk '{printf "%.3f\n", $0}'

или вы можете просто использовать awk для всего этого

awk '{printf "%.3f\n", 1/8}' <<< ""

Вывод

0.125

Почему мы должны делать <<< ""?
Кевин Донг

Для работы @KevinDongNaiJia awk требуется входной файл, он создает и очищает here string. Таким образом, в основном притворяется, что в конце есть пустой файл, иначе awk будет читать из stdin.Дополнительная информация здесь

@cuonglm, так что вы не можете редактировать мои ответы, пожалуйста.

@cuonglm Petty downvote, хорошо!

1
@JID: Не вся оболочка поддерживает здесь строку, вам нужно указать ее для других зрителей. Использование BEGINблока избавит вас от этой проблемы, и это портативно.
cuonglm
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.