Afronden van getallen

Bash:
Afronden van getallen

Hoe te:

Hier is de informatie over afronden in Bash:

# Naar beneden afronden met 'floor' met bc
echo "scale=0; 3.49/1" | bc

# Naar boven afronden met 'ceiling' met bc
echo "scale=0; 3.01/1" | bc -l

# Afronden naar de dichtstbijzijnde hele met printf
printf "%.0f\n" 3.49

# Een trucje om naar de dichtstbijzijnde hele af te ronden met bc
echo "(3.49+0.5)/1" | bc

Voorbeelduitvoeren—rechtstreeks uit de mond van de terminal:

3  # Naar beneden afgerond (floor)
4  # Naar boven afgerond (ceiling)
3  # Afgerond naar de dichtstbijzijnde (met printf)
3  # Afgerond naar de dichtstbijzijnde (met bc)

Diepduiken

Vroeger was er geen bc of printf in Bash-scripts om wiskundige trucs te doen. Oudgedienden moesten vertrouwen op externe tools of slimme workarounds. Nu, bc laat je precisierekenkunde doen. Bedenk wel, bc rondt niet standaard af—it maakt gebruik van afronding naar beneden. Het scale deel bepaalt de actie van het decimaalteken.

Alternatieven? Je zou awk kunnen gebruiken voor afronding zonder over te schakelen naar bc of worstelen met perl voor zwaardere wiskundige behoeften. Voor de masochistische onder ons, ga puur Bash met, laten we zeggen, iteratieve tekenreeksmanipulatie - maar waarom?

Wat betreft details, bc doet niet alleen afronding, het doet veel wiskundige dingen - schaal het, sinus het, wortel het, noem maar op. Met printf, gaat het meer over tekst formatteren, maar hé, het rondt getallen af, dus we klagen niet.

Zie ook

Voor degenen die meer willen weten: