Numbers in Haskell can be of the type
Int, Integer, Float, Double, or Rational
.
1 Rounding numbers
Problem

Solution

Examples

rounding

round

round 3.4 > 3
round 3.5 > 4

finding the nearest integer greater than or equal to x

ceiling

ceiling 3.0 > 3
ceiling 3.1 > 4

finding the nearest integer less than or equal to x

floor

floor 3.0 > 3
floor 3.9 > 3

2 Taking logarithms
log 2.718281828459045 > 1.0
logBase 10 10000 > 4.0
3 Generating random numbers
import System.Random
main = do
gen < getStdGen
let ns = randoms gen :: [Int]
print $ take 10 ns
4 Binary representation of numbers
import Data.Bits
import Data.List (foldl')
 Extract a range of bits, mostsignificant first
bitRange :: Bits a => a > Int > Int > [Bool]
bitRange n lo hi = foldl' (\l > \x > testBit n x : l) [] [lo..hi]
 Extract all bits, mostsignificant first
bits :: Bits a => a > [Bool]
bits n = bitRange n 0 (bitSize n  1)
 Display a number in binary, including leading zeroes.
 c.f. Numeric.showHex
showBits :: Bits a => a > ShowS
showBits = showString . map (\b > if b then '1' else '0') . bits
5 Complex numbers
Problem

Solution

Examples

creating a complex number from real and imaginary rectangular components

(:+)

import Complex
1.0 :+ 0.0 > 1.0 :+ 0.0

creating a complex number from polar components

mkPolar

import Complex
mkPolar 1.0 pi > (1.0) :+ 1.2246063538223773e16
