Python Language Arrotondamento: rotondo, pavimento, ceil, trunc


Esempio

Oltre alla funzione round incorporata, il modulo math fornisce le funzioni floor , ceil e trunc .

x = 1.55
y = -1.55

# round to the nearest integer
round(x)       #  2
round(y)       # -2

# the second argument gives how many decimal places to round to (defaults to 0)
round(x, 1)    #  1.6
round(y, 1)    # -1.6

# math is a module so import it first, then use it.
import math

# get the largest integer less than x
math.floor(x)  #  1
math.floor(y)  # -2

# get the smallest integer greater than x
math.ceil(x)   #  2
math.ceil(y)   # -1

# drop fractional part of x
math.trunc(x)  #  1, equivalent to math.floor for positive numbers
math.trunc(y)  # -1, equivalent to math.ceil for negative numbers
Python 2.x 2.7

floor , ceil , trunc e round restituiscono sempre un float .

round(1.3)  # 1.0

round rompe sempre i legami dallo zero.

round(0.5)  # 1.0
round(1.5)  # 2.0
Python 3.x 3.0

floor , ceil e trunc restituiscono sempre un valore Integral , mentre round restituisce un valore Integral se chiamato con un argomento.

round(1.3)      # 1
round(1.33, 1)  # 1.3

round rompe i legami verso il numero pari più vicino. Questo corregge la tendenza verso numeri più grandi quando si esegue un numero elevato di calcoli.

round(0.5)  # 0
round(1.5)  # 2

Avvertimento!

Come con qualsiasi rappresentazione a virgola mobile, alcune frazioni non possono essere rappresentate esattamente . Ciò può comportare un comportamento di arrotondamento imprevisto.

round(2.675, 2)  # 2.67, not 2.68!

Avviso sul piano, trunc e divisione intera dei numeri negativi

Python (e C ++ e Java) arrotondati da zero per i numeri negativi. Tenere conto:

>>> math.floor(-1.7)
-2.0
>>> -5 // 2
-3