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" | bc

Beispielausgaben—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: