bc
Behandelt Zahlen als Ganzzahlen:
# echo "100/3" | bc
33
bc -l
behandelt Zahlen als Gleitkommaobjekte:
# echo "100/3" | bc -l
33.33333333333333333333
Gibt es eine Möglichkeit, die Anzahl der Nachkommastellen zu begrenzen?
command-line
bc
Adam Matan
quelle
quelle
scale=0;1234*1.1
du es so schreiben, dass esscale=0;1234*1.1/1
kommt1357
. Ansonstenscale
bekommst du, egal welchen Wert du hast1357.4
.1234*1.0
Sie geben werden1234.0
Antworten:
Stellen Sie die
scale
spezielle Variable ein:quelle
$ echo "scale=2; (100/180)*180" | bc
gibt 99.00 :(.5
.~$ echo "scale=2; 12/104" | bc
.11
Aufgerundet wäre dies.12
. Es sollte jedoch immer noch die Arbeit für meine Aufgabe erledigen.echo "result = (100/180) * 180; scale=2; result / 1" | bc -l
. Jetzt verstehst du99.99
.scale
funktioniert nur für die Teilung; Wenn es einige Geeks bei der Multiplikation benötigen, können Sie dies durch die Verwendung von String-Manipulationen erreichen. Sagen Sie, wenn Sie multiplizieren müssen32 * 0.60
, ist die Antwort19.20
. Wenn Sie es allein als Antwort benötigen, können Sie es auf verschiedene Arten erhalten.String-Manipulation verwenden
Syntax zur Manipulation von Zeichenfolgen:
${Variable%pattern}
Hiermit werden die folgenden kurzen Übereinstimmungsmuster gelöscht%
. Weitere Informationen zur String-Bearbeitung finden Sie im Advanced Bash-Scripting Guide .Verwendung
Scale
wie von angegeben**chronitis**
Um die nachgestellten Nullen loszuwerden, kann anstelle der Manipulation von Zeichenfolgen auch eine Division durch 1 durchgeführt werden.
quelle
Zusätzlich zu früheren Antworten
Kehrt zurück
Addiere mathematische Operationen, um nur 2 Dezimalzahlen zu erhalten - (NUMBER * 100) / 100
Jetzt kehrt zurück
quelle
Sie können auch den Befehl printf verwenden, um das Ergebnis auf 3 Dezimalstellen abzurunden
quelle
Abrunden
scale = 2 schneidet die Antwort auf zwei Dezimalstellen ab, aber wir können eine Abrundung wie folgt erzielen:
quelle