今天繼續學習浮點數,我們常用的便是把浮點數轉換成點數,這種「轉換」總是會遺失一些資訊,因為小數點後面的位數不見了。
Python 有以下四種浮點數 > 整數的轉換方式:
Rounding 比較複雜留待明天解釋,今天來學習前面三種轉換吧!
from math import trunc
trunc(10.3), trunc(10.5), trunc(10.6)
(10, 10, 10)
trunc(-10.6), trunc(-10.5), trunc(-10.3)
(-10, -10, -10)
從上述例子可以發現,truncation 就是捨棄小數點後面的位數,只留下小數點前面的數值。
把浮點數傳入 int 方法其實也是做 truncation,所以我們可以用 int 做到一樣的效果:
int(10.3), int(10.5), int(10.6)
(10, 10, 10)
int(-10.5), int(-10.5), int(-10.4)
(-10, -10, -10)
from math import floor
floor(10.4), floor(10.5), floor(10.6)
(10, 10, 10)
floor(-10.4), floor(-10.5), floor(-10.6)
(-11, -11, -11)
floor 是地板的意思,代表把浮點數轉換為小於等於它的整數,這邊可以發現,對正整數來說 flooring 等於 truncation,但負整數結果不同,要特別小心!
from math import ceil
ceil(10.4), ceil(10.5), ceil(10.6)
(11, 11, 11)
ceil(-10.4), ceil(-10.5), ceil(-10.6)
(-10, -10, -10)
ceiling 是天花板的意思,代表將浮點數轉換成大於等於它的整數,如上述範例所示。
好啦,今天就練習到這邊,明天來學習 Round 吧!
參考:Python 3: Deep Dive (Part 1 - Functional)