O que posso fazer para alterar o valor “.33” para “0.33”?

5

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".

    
por cipri 01.05.2015 / 11:39

5 respostas

4

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
    
por Jos 01.05.2015 / 11:46
5
a=1
b=3
printf -v solution "%.2f" $(bc -l <<< "$a / $b")
echo $solution

Saída:

0.33

Se $ a e $ b são sempre números inteiros e você está procurando por uma única solução bash para dividir dois inteiros: Então você pode estar interessado em este .

    
por Cyrus 01.05.2015 / 12:05
3

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
    
por chaos 01.05.2015 / 12:13
1

Você também pode obter o zero inicial usando perl :

$ echo 1 / 3 | bc -l | perl -ne 'printf"%0.2f\n",$_'
0.33
    
por Sylvain Pineau 01.05.2015 / 14:13
1

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"
    
por A.B. 01.05.2015 / 15:19