12 lines
396 B
Haskell
12 lines
396 B
Haskell
-- | Show at least n decimal places
|
|
|
|
showRational :: Natural -> Rational -> String
|
|
showRational n r = let
|
|
|
|
sign = if r < 0 then '-' else '+'
|
|
(integer, rest) = (numerator r `quotRem` denominator r)
|
|
decimal = show $ rest * 10 ^ n `quot` denominator r
|
|
zeroes = replicate (fromIntegral n - length decimal) '0'
|
|
|
|
in sign : show integer ++ "." ++ zeroes ++ decimal
|