10 Округление: круг, пол, потолок, ствол

В дополнение к встроенной round функции, то math модуль обеспечивает floor , ceil и 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

 
`floor`,` ceil`, `trunc` и` round` всегда возвращают `float`. round (1.3) # 1.0 `round` всегда разрывает связи от нуля. раунд (0,5) # 1,0 раунд (1,5) # 2,0 `floor`,` ceil` и `trunc` всегда возвращают значение` Integral`, тогда как `round` возвращает значение` Integral`, если вызывается с одним аргументом. round (1.3) # 1 round (1.33, 1) # 1.3 `round` разрывает связи в направлении ближайшего четного числа. Это исправляет смещение в сторону больших чисел при выполнении большого количества вычислений. раунд (0,5) # 0 раунд (1,5) # 2

Предупреждение!

Как и с любым плавающей точкой представления, некоторые фракции не могут быть представлены точно. Это может привести к неожиданному поведению при округлении.

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

 

Предупреждение о полу, усечении и целочисленном делении отрицательных чисел

Python (и C ++ и Java) округляются от нуля для отрицательных чисел. Рассматривать:

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