圆形地板 ceil trunc

除了内置的 round 功能外,math 模块还提供了 floorceiltrunc 功能。

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

floorceiltruncround 总是返回 float

round(1.3)  # 1.0

round 总是打破零关系。

round(0.5)  # 1.0
round(1.5)  # 2.0

Python 3.x >= 3.0

floorceiltrunc 总是返回 Integral 值,而 round 返回 Integral 值,如果用一个参数调用。

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

round 打破了最接近偶数的关系。在执行大量计算时,这会将偏差校正为较大的数字。

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

警告!

与任何浮点表示一样,某些分数无法准确表示。这可能会导致一些意外的舍入行为。

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

关于负数的地板,截断和整数除法的警告

对于负数,Python(和 C++和 Java)从零开始。考虑:

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