bc
traite les nombres comme des entiers:
# echo "100/3" | bc
33
bc -l
traite les nombres comme des objets à virgule flottante:
# echo "100/3" | bc -l
33.33333333333333333333
Existe-t-il un moyen de limiter le nombre de chiffres après le signe décimal?
command-line
bc
Adam Matan
la source
la source
scale=0;1234*1.1
, vous devez l'écrire commescale=0;1234*1.1/1
pour l'obtenir1357
. Sinon, peu importe la valeur descale
, vous obtenez1357.4
.1234*1.0
va vous donner1234.0
Réponses:
Définissez la
scale
variable spéciale:la source
$ echo "scale=2; (100/180)*180" | bc
donne 99,00 :(.5
.~$ echo "scale=2; 12/104" | bc
.11
Si arrondi ce serait.12
. Cependant, il devrait toujours faire le travail pour ma tâche.echo "result = (100/180) * 180; scale=2; result / 1" | bc -l
:. Maintenant vous avez99.99
.scale
ne fonctionne que pour la division; si certains geeks en ont besoin lors de la multiplication, vous pouvez y parvenir en utilisant la manipulation de chaîne. Dites si vous avez besoin de multiplier32 * 0.60
, la réponse est19.20
. Si vous avez besoin de l'obtenir seul en réponse, vous pouvez l'obtenir par différentes méthodes.Utilisation de la manipulation de chaîne
Syntaxe de manipulation de chaîne:,
${Variable%pattern}
ceci supprimera le motif de correspondance court qui suit%
. Pour plus de détails sur la manipulation des chaînes, voir le Guide de script de Bash avancé .Utiliser
Scale
comme indiqué par**chronitis**
Pour se débarrasser des zéros de fin, au lieu de manipuler des chaînes, on peut aussi faire une division par 1.
la source
En plus des réponses précédentes
Résultats
Ajoutez des opérations mathématiques pour obtenir seulement 2 nombres décimaux - (NUMBER * 100) / 100
Maintenant revient
la source
vous pouvez également utiliser la commande printf pour arrondir le résultat jusqu'à 3 décimales
la source
Arrondir
scale = 2 tronque la réponse à deux chiffres décimaux, mais nous pouvons arrondir comme ceci:
la source