Bash:
Avrunding av tall

Hvordan:

Her er det grunnleggende om avrunding i Bash:

# Rund ned med 'floor' med bc
echo "scale=0; 3.49/1" | bc

# Rund opp med 'ceiling' med bc
echo "scale=0; 3.01/1" | bc -l

# Rund til nærmeste hele tall med printf
printf "%.0f\n" 3.49

# Et triks for å runde til nærmeste hele tall med bc
echo "(3.49+0.5)/1" | bc

Eksempelutskrifter—rett fra terminalens munn:

3  # Rundet ned (floor)
4  # Rundet opp (ceiling)
3  # Rundet til nærmeste (med printf)
3  # Rundet til nærmeste (med bc)

Dyp Dykk

Tilbake i dagen, fantes det ikke bc eller printf i Bash-skript for å utføre matte-magi. Gamle helter måtte stole på eksterne verktøy eller smarte omveier. Nå lar bc deg utføre presisjonsmatematikk. Husk, bc runder ikke av som standard - den utfører floor-operasjonen. Scale-delen setter desimalpunktshandlingen.

Alternativer? Du kunne bruke awk for avrunding uten å bytte til bc, eller bryne deg på perl for tyngre mattebehov. For de masochistiske, gå rent Bash med, la oss si, iterativ strengbehandling – men hvorfor?

Når det gjelder detaljer, runder ikke bc bare av, den utfører hauger av matte-greier—skalert den, sin den, sqrt den, du nevner det. Med printf er det mer om tekstformatering, men hei, det runder av tall, så vi klager ikke.

Se Også

For de som er sultne på mer: