温度

温度

学习练习

简介

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

说明

你所在的消防队由来自世界各地的志愿者组成。 由于团队成员来自不同国家,在最近几次出警中,大家为了估算着火建筑内部的温度,不得不在华氏度和摄氏度之间来回换算,白白浪费了宝贵的时间。 为了节省时间,也为了救人,你决定写一个程序,为你的国际团队自动完成华氏度和摄氏度之间的换算。

1. 将华氏度转换为摄氏度

实现tempToC函数,把以Integer表示的华氏温度转换成等价的摄氏温度Float,并四舍五入到小数点后两位。 摄氏温度的定义是:T(°C) = (T(°F) - 32) / 1.8。

> tempToC 32
0.00

2. 将摄氏度转换为华氏度

实现tempToF函数,把以Float表示的摄氏温度转换成等价的华氏温度。 出于安全考虑,请将结果向上取整为大于等于它的最小Integer。 华氏温度的定义是:T(°F) = T(°C) × 1.8 + 32。

> tempToF 4
40
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Haskell Exercism

准备好开始 温度 了吗?

注册 Exercism,借助 107 个练习 和真人导师指导,学习并掌握 Haskell,全部免费。