Bash:
Zahlen runden
Wie zu:
Hier ist das Wichtigste zum Runden in Bash:
# Abrunden mit 'floor' mittels bc
echo "scale=0; 3.49/1" | bc
# Aufrunden mit 'ceiling' mittels bc
echo "scale=0; 3.01/1" | bc -l
# Auf nächste ganze Zahl runden mit printf
printf "%.0f\n" 3.49
# Ein Trick, um auf die nächste ganze Zahl mit bc zu runden
echo "(3.49+0.5)/1" | bcBeispielausgaben—direkt aus dem Terminal:
3 # Abgerundet (floor)
4 # Aufgerundet (ceiling)
3 # Auf nächste ganze Zahl gerundet (mit printf)
3 # Auf nächste ganze Zahl gerundet (mit bc)Tiefergehend
Früher gab es in Bash-Skripten kein bc oder printf, um die Mathe-Magie zu bewerkstelligen. Die Alteingesessenen mussten sich auf externe Tools oder kunstvolle Umwege verlassen. Jetzt ermöglicht bc präzise Mathematik. Dabei sollte man im Kopf behalten, dass bc standardmäßig nicht rundet – es führt eine Bodenfunktion durch. Der Teil mit der “scale” legt die Dezimalstellenaktion fest.
Alternativen? Man könnte awk für das Runden ohne Wechsel zu bc nutzen oder mit perl für anspruchsvollere Mathe-Bedürfnisse herumhantieren. Für Masochisten: Reines Bash mit, sagen wir, iterativer Zeichenkettenmanipulation – aber warum?
Was die Details betrifft, so rundet bc nicht nur, es macht jede Menge Mathe-Kram—es skaliert, sinust, wurzelt, was auch immer Sie wollen. Mit printf geht es mehr um das Formatieren von Text, aber hey, es rundet Zahlen, also beschweren wir uns nicht.
Siehe auch
Für die, die mehr wollen:
- GNU
bcHandbuch: https://www.gnu.org/software/bc/manual/html_mono/bc.html - Bash
printfBefehl: https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html#index-printf - AWK Benutzerhandbuch (für Rundungen und andere Textverarbeitungen): https://www.gnu.org/software/gawk/manual/gawk.html
- Mehr Mathematik, Skripte und Zahlentricks mit Bash: https://mywiki.wooledge.org/BashFAQ/022