Cookbook/Numbers
From HaskellWiki
< Cookbook(Difference between revisions)
m (→Rounding numbers) 
(→Rounding numbers) 

Line 20:  Line 20:  
<haskell>  <haskell>  
ceiling 3.1 > 4  ceiling 3.1 > 4  
+  ceiling 4.0 > 4  
</haskell>  </haskell>  
    
Line 26:  Line 27:  
<haskell>  <haskell>  
floor 3.5 > 3  floor 3.5 > 3  
+  floor 3.0 > 3  
</haskell>  </haskell>  
}  } 
Revision as of 11:33, 23 April 2009
Numbers in Haskell can be of the typeInt, Integer, Float, Double, or Rational
Contents 
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.1 > 4 ceiling 4.0 > 4 
finding the nearest integer less than or equal to x

floor  floor 3.5 > 3 floor 3.0 > 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 Using 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 