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?

Kevin Dong
fonte

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
cuonglm
fonte
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

fonte
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