Integerها هر عددی را نگه میدارند، هر چقدر هم بزرگ، تا محدودیت حافظهی دستگاه شما؛ در حالی که Int متناظر با مجموعهی اعداد صحیح مثبت و منفی است که میتوانند در ۳۲ یا ۶۴ بیت بیان شوند (که حداقل از -۲^۲۹ تا ۲^۲۹ تضمین شده است).
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) - ۳۲) / ۱٫۸.
> tempToC 32
0.00
تابع tempToF را پیادهسازی کنید تا یک دمای Float بر حسب سلسیوس را به معادل آن بر حسب فارنهایت تبدیل کند.
به دلایل ایمنی، نتیجه را به بالا گرد کنید تا به بالاترین Integer بعدی برسد.
دمای بر حسب درجه فارنهایت اینگونه تعریف میشود: T(°F) = T(°C) × ۱٫۸ + ۳۲.
> tempToF 4
40