module Format where import Data.Int (toNumber, fromNumber) import Data.Array (replicate) import Data.Maybe (fromMaybe) import Data.String (length, joinWith) import Math (round, trunc, pow) import Prelude number :: Int -> Number -> String number decimalLength num = formattedIntegerPart <> formattedDecimalPart where formattedIntegerPart = (if decimalLength > 0 then trunc num else round num) # fromNumber # fromMaybe 0 # show formattedDecimalPart = if decimalLength > 0 then ((num - trunc num) * pow 10.0 (toNumber decimalLength)) # round # fromNumber # fromMaybe 0 # show # \str -> "," <> (joinWith "" $ replicate (decimalLength - length str) "0") <> str else ""