圆形地板 ceil trunc
除了内置的 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
Python 2.x <= 2.7
floor
,ceil
,trunc
和 round
总是返回 float
。
round(1.3) # 1.0
round
总是打破零关系。
round(0.5) # 1.0
round(1.5) # 2.0
Python 3.x >= 3.0
floor
,ceil
和 trunc
总是返回 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