Hogyan lehet kerekíteni a számokat Pythonban

Kerekítsen egy értéket a Python -ban, hívássalmath.ceil()- Mindig a legkisebb egész egész számot adja vissza, mint a bemenet (a +∞ felé), ami azt jelenti, hogy megbízhatóan „felkerekít” mind a pozitív, mind a negatív számok esetében.

1. módszer: Használja a Math.ceil -t egyetlen számhoz

1. lépés:Importálja a matematikai modult.

import math

2. lépés:Hívásmath.ceil(value)hogy felkerüljenek.

print(math.ceil(4.2))   # 5
print(math.ceil(-1.2))  # -1 (toward +∞)

3. lépés:EldobintCsak akkor, ha kifejezetten szüksége van egy egész számra (Python 3 -osceilMár visszatérint).

n = math.ceil(2.3)  # int 3

2. módszer: Kerekítse fel az N tizedes helyre egy méretarányt

Szorozzuk meg a tizedes tételéhez, alkalmazzaceil, majd ossza vissza. Ez a minta gyors a felhasználói felület kerekítéséhez vagy a vödör küszöbéhez.

1. lépés:Válasszon egy szorzót, mint10 ** decimals-

import math

def round_up(n, decimals=0):
    m = 10 ** decimals
    return math.ceil(n * m) / m

2. lépés:Hívja a segítőt, hogy kerekítse a pontosságát.

print(round_up(2.341, 2))   # 2.35
print(round_up(22.45, -1))  # 30.0 (round up to tens)

3. lépés:Vigyázzon a lebegőpontos tárgyakra; Ha pénzszint pontosságra van szükség, használjaDecimal(Következő módszer).

3. módszer: Használja a decimációt a pontos, szabályalapú „kerekítés” esetén

A pénzügyi vagy megfelelési szabályokhoz (pl. „Mindig kerekítsen a nullától” vagy a „felé a +∞”) használja a Python decimális értékét, amely támogatja a pontos tizedes számítási és explicit kerekítési módokat.

1. lépés:FelépítDecimala húrokból származó értékek a bináris úszó pontatlanság elkerülése érdekében.

from decimal import Decimal, ROUND_UP, ROUND_CEILING

d = Decimal("2.341")

2. lépés:Hívásquantizecélkitűzéssel és a szükséges kerekítési móddal.

# ROUND_UP: always away from zero (2 decimals)
print(d.quantize(Decimal("0.01"), rounding=ROUND_UP))       # 2.35

# ROUND_CEILING: always toward +∞ (handles negatives differently)
print(Decimal("-2.341").quantize(Decimal("0.01"), rounding=ROUND_CEILING))  # -2.34

3. lépés:Válassza ki azt a módot, amely megfelel az Ön házirendjének.ROUND_UP„távol van a nullától”;ROUND_CEILING„felfelé” a +∞ felé, ami a negatívok esetében különbözik.

4. módszer: Do egész számú „mennyezeti osztály” (számok, oldalak, tételek)

Ha azt akarja, hogy „hány teljes B méretű darabot fedjen le a?”, Használjon egész szám mennyezeti osztályt. Ez elkerüli az úszókat, a feltételeket és az importot.

1. lépés:Használja a kettős negatív trükköt a padlóosztással.

# Works for integers; assumes positive divisor
def ceil_div(a, b):
    return -(-a // b)

print(ceil_div(21, 5))  # 5
print(ceil_div(20, 5))  # 4

2. lépés:Inkább ezt részesítse előnyben, ha az elemeket oldalakra, tételekre vagy sorokra osztja.

3. lépés:Ha mindkettőaésbnem negatívak,(a + b - 1) // bszintén működik; A kettős kiosztási forma tisztán az egész számtáblák szélesebb körét kezeli.

5. módszer: kerekítse fel a tömböket numpy -vel

Vektorok vagy mátrixok esetén alkalmazza a vektorizált kerekítéstnumpy.ceil()hogy mennyezetet kapjon.

1. lépés:Konvertálja adatait Numpy tömbre.

import numpy as np

arr = np.array([3.14, 2.72, -0.1])

2. lépés:Hívásnp.ceil(arr)az összes elem kerekítéséhez.

print(np.ceil(arr))  # [ 4.  3. -0.]

3. lépés:Szükség esetén az egész számra dobja.

Olvassa el még:Az Xbox Division állítólag az elbocsátások újabb fordulója előtt áll a pénzügyi év vége előtt

print(np.ceil(arr).astype(int))  # [ 4  3  0]

FYI: Miértround()nem a „kerekítés”

A beépítettround()Félig egyenletes (bankár kerekítés). Ez minimalizálja a torzítást sok értéken, de nem mindig kerekít (pl.round(2.5)2). Használja a fenti módszereket, amikor szabály szerint kell kerekítenie.

Választmath.ceilGyors egyetlen értékek esetén a skála és a kaszképi minta vagyDecimalKonkrét tizedesjegyekhez és pénzügyi szabályokhoz, az egész mennyezeti osztály a számláláshoz és a tömböknél. Ez a kerekítést kifejezetten, kiszámíthatónak és helyesnek tartja a kéznél lévő feladathoz.

Related Posts