Integer可以存放任意大的數字,只受限於你機器的記憶體,而Int則對應到可用 32 或 64 位元表示的正負整數集合(至少保證能表示 -2^29 到 2^29)。
Float對應到實數的集合,但其精度受電腦限制。
定義在數字上的運算通常只適用於其中一種型別,無法同時適用於兩者。
在Float和Integer之間轉換的函式,其中包括toFloat(將Int/Integer轉換成Float)和ceiling(將Float轉換成Int)等。
從整數型別(Int或Integer)轉換成任何其他數值型別時,是使用函式fromIntegral來完成。
目標型別會自動推論。
例如:
n :: Integer
n = 6
x :: Float
x = fromIntegral n --> x = 6.0
m :: Int
m = 7
y :: Double
y = fromIntegral m --> y = 7.0
你是一個國際志工消防隊的成員。由於團隊成員來自世界各地,過去幾次出勤時,大家為了估算燃燒中建築物內的溫度,得在華氏與攝氏之間來回換算,浪費了許多寶貴的時間。為了節省時間,也為了救人,你決定寫一個程式,替你的國際團隊自動換算華氏與攝氏。
實作 tempToC 函式,將以華氏表示的 Integer 溫度轉換成對應的攝氏 Float,並四捨五入到小數點後第二位。
攝氏溫度的定義為:T(°C) = (T(°F) - 32) / 1.8。
> tempToC 32
0.00
實作 tempToF 函式,將以攝氏表示的 Float 溫度轉換成對應的華氏溫度。
基於安全考量,請將結果無條件進位到下一個最大的 Integer。
華氏溫度的定義為:T(°F) = T(°C) × 1.8 + 32。
> tempToF 4
40