Integer 可以保存任意大小的数字,只要不超过机器内存的上限;而 Int 对应的是能用 32 位或 64 位表示的正负整数集合(至少保证涵盖 -2^29 到 2^29)。
Float 对应实数集合,受计算机精度的限制。
针对数字定义的运算通常只适用于其中一种类型,而不能同时适用于两者。
在 Float 和 Integer 之间转换的函数有很多,其中包括把 Int/Integer 转换成 Float 的 toFloat,以及把 Float 转换成 Int 的 ceiling。
从整数类型(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