Como mostrar zero antes do ponto decimal em bc?


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

mostra .125na tela. Como mostrar 0.125se o resultado da saída é menor que um?

Respostas:


9

bcnão pode gerar zero antes do ponto decimal, você pode usar printf :

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

Comando mais legível por humanos. ;-)
Kevin Dong

1

Você pode entrar no awk

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

ou você pode simplesmente usar o awk para tudo

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

Resultado

0.125

Por que deveríamos fazer <<< ""?
Kevin Dong

O @KevinDongNaiJia awk requer um arquivo de entrada para funcionar, isso cria e esvazia here string. Então, basicamente finge não há um arquivo vazio no final, caso contrário, o awk irá ler a partir de informações stdin.More aqui

@cuonglm para que você possa, não edite minhas respostas, por favor.

@cuonglm Petty voto negativo, nice!

1
@JID: Nem todo o shell é suportado aqui, é necessário especificá-lo para outros visualizadores. O uso do BEGINbloco evita esse problema e é portátil.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.