-- | round in decimal places
--   > pi    -> 3.141592653589793
--   > roundTo 20 pi   -> 3.141592653589793
--   > roundTo 4 pi    -> 3.1416            --round up 5-9
--   > roundTo 3 pi    -> 3.142           
--   > roundTo 2 pi    -> 3.14              --round down 0-4
--   > roundTo 1 pi    -> 3.1
--   > roundTo 0 3141592.65    -> 3141593.0
--   > roundTo (-1) 3141592.65 -> 3141590.0  
--   > roundTo (-2) 3141592.65 -> 3141600.0  
--   > roundTo (-3) 3141592.65 -> 3142000.0  
--   > roundTo (-4) 3141592.65 -> 3140000.0  
roundTo :: (RealFrac a, Integral b) => b -> a -> a
roundTo i = let n = 10^^i in
             (/n) . fromIntegral . round . (*n)
roundTo :: (RealFrac a, Integral b) => b -> a -> a
roundTo i = let n = 10^^i in
             (/n) . fromIntegral . round . (*n)
roundTo i = let n = 10^^i in
             (/n) . fromIntegral . round . (*n)