web-dev-qa-db-fra.com

Que puis-je faire pour changer la valeur ".33" en "0.33"?

Je veux comparer la valeur contre 0 et il me dit que c'est inférieur à 0. J'ai utilisé

solution=`echo $a / $b | bc -l`

Ce problème se produit uniquement lorsque "a" est inférieur à "b".

5
cipri

bc n'imprimera pas de zéro. Vous pouvez imprimer le résultat en le dirigeant vers

awk '{printf "%0.2f", $1}'

Résumer:

solution=$(echo 1 / 3 | bc -l | awk '{printf "%0.2f", $1}')
echo $solution
4
Jos
a=1
b=3
printf -v solution "%.2f" $(bc -l <<< "$a / $b")
echo $solution

Sortie:

 0.33 

Si $ a et $ b sont toujours des entiers et que vous recherchez une solution bash permettant de diviser deux entiers: Vous pourriez alors être intéressé par this .

5
Cyrus

Avec printf:

$ printf '%f' $(echo $a / $b | bc -l)
0.200000

Si vous voulez seulement 1 position après le point décimal:

$ printf '%.1f' $(echo $a / $b | bc -l)
0.2
3
chaos

Vous pouvez également obtenir le zéro initial en utilisant Perl:

$ echo 1 / 3 | bc -l | Perl -ne 'printf"%0.2f\n",$_'
0.33
1
Sylvain Pineau

Ou vous pouvez utiliser uniquement Perl:

$ export a=1 b=3; Perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});'
0.33

et pour votre script:

solution=$(export a=1 b=3; Perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});')
echo "$solution"
1
A.B.