Comment afficher zéro avant le point décimal en BC?

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

s'affiche .125à l'écran. Comment montrer 0.125si le résultat de sortie est inférieur à un?

Kevin Dong
la source

Réponses:

9

bcne peut pas sortir zéro avant le point décimal, vous pouvez utiliser printf :

$ printf '%.3f\n' "$(echo "scale=3;1/8" | bc)"
0.125
cuonglm
la source
Commande plus lisible par l'homme. ;-)
Kevin Dong
1

Vous pouvez diriger vers awk

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

ou vous pouvez simplement utiliser awk pour tout cela

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

Production

0.125

la source
Pourquoi devrions-nous faire <<< ""?
Kevin Dong
@KevinDongNaiJia awk nécessite un fichier d'entrée pour fonctionner, cela crée et vide here string. Donc, fondamentalement, prétend qu'il y a un fichier vide à la fin, sinon awk lira à partir de stdin.Plus d'informations ici
@cuonglm pour que vous puissiez, ne modifiez pas mes réponses, s'il vous plaît.
@cuonglm Petty downvote, nice!
1
@JID: Tous les shell ne sont pas pris en charge ici, vous devez le spécifier pour les autres utilisateurs. L'utilisation de BEGINblock vous évite ce problème et c'est portable.
cuonglm