Python取整——向上取整、向下取整、四捨五入取整、向0取整
阿新 • • 發佈:2019-01-03
廢話少敘,直接上code:
首先,不得不提醒大家一個容易被忽視或者搞混的問題——一般的,0.5這種末尾是5的小數,四捨五入取整應進位。這個進位的意思是:-0.5 → -1;0.5 → 1.即正負情況不同,都向著遠離0,使得絕對值更大的方向進位
- 向上取整:math.ceil()
import math math.ceil(-0.5) >>> 0 math.ceil(-0.9) >>> 0 math.ceil(0.3) >>> 1
如code所見,math.ceil()嚴格遵循向上取整,所有小數都是向著數值更大的方向取整,不論正負數都如此
-
四捨五入:round()
round(-2.5) >>> -2 round(-1.5) >>> -2 round(-0.5) >>> 0 round(0.5) >>> 1 round(1.5) >>> 2 round(2.5) >>> 2
如code所示,round()當不傳入第二個引數時預設取整,具體就是按照四捨五入來。但值得一提的是這裡對小數末尾為5的處理方法:當末尾的5的前一位為奇數:向絕對值更大的方向取整(比如-1.5、1.5處理結果);當末尾的5的前一位為偶數:去尾取整(比如-2.5,-0.5,0.5和2.5的處理結果)。
-
向下取整:math.floor()
math.floor(-0.3) >>> -1 math.floor(0.9) >>> 0
簡單且忠實地向下取整,不再討論
-
兩個有趣且特殊的Python取整:int()、整除"//"
-
int()
int(-0.5) >>> 0 int(-0.9) >>> 0 int(0.5) >>> 0 int(0.9) >>> 0
一句話總結:int()函式是“向0取整”,取整方向總是讓結果比小數的絕對值更小
-
"//"
(-1) // 2 # -0.5 >>> -1 (-3) // 2 # -1.5 >>> -2 1 // 2 # 0.5 >>> 0 3 // 2 # 1.5 >>> 1
一句話總結:“整除”符號運算將結果忠實地向下取整,與math.floor()處理結果一樣
-
總結一下:
- 向上取整:math.ceil()
- 向下取整:math.floor()、整除"//"
- 四捨五入:round()——奇數向遠離0取整,偶數去尾取整;或言之:奇數進位,偶數去尾
- 向0取整:int()
由於最近在做演算法題,許多演算法題都要涉及(0-1)/2這類的邊界計算,這時候我們想讓這個-0.5取整至0,而且想讓(4-1)/2的結果1.5取整至1,即正數時向下取整,負數時向上取整,總而言之就是向0取整,這時候我們可以用int()