bc
não imprime um zero à esquerda. Você pode imprimir a saída canalizando-a para
awk '{printf "%0.2f", }'
Para resumir:
solution=$(echo 1 / 3 | bc -l | awk '{printf "%0.2f", }')
echo $solution
Eu quero comparar o valor com 0 e ele me diz que é menor que 0. Eu usei
solution='echo $a / $b | bc -l'
Esse problema ocorre apenas quando "a" é menor que "b".
bc
não imprime um zero à esquerda. Você pode imprimir a saída canalizando-a para
awk '{printf "%0.2f", }'
Para resumir:
solution=$(echo 1 / 3 | bc -l | awk '{printf "%0.2f", }')
echo $solution
com printf
:
$ printf '%f' $(echo $a / $b | bc -l)
0.200000
Se você quiser apenas 1 posição após o ponto decimal:
$ printf '%.1f' $(echo $a / $b | bc -l)
0.2
Você também pode obter o zero inicial usando perl
:
$ echo 1 / 3 | bc -l | perl -ne 'printf"%0.2f\n",$_'
0.33
Ou você pode usar somente perl:
$ export a=1 b=3; perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});'
0.33
e para o seu script:
solution=$(export a=1 b=3; perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});')
echo "$solution"
Tags command-line bash echo