圓形地板 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