Format numbers with fancy suffixes.
format : Config -> Basics.Float -> String
Format numbers with fancy suffixes.
format standardConfig 12345 --> "12,345"
format standardConfig 1.23e10 --> "12.3 billion"
config : Config
config = { standardConfig | getSuffix = suffixStandardShort }
format config 1.23e10 --> "12.3B"
formatInt : Config -> Basics.Int -> String
Format integers with fancy suffixes. See format
.
formatSigExp : Config -> Basics.Float -> Basics.Int -> String
Format a significand and an exponent.
formatSigExp standardConfig 12.345 3 --> "12,345"
formatSigExp standardConfig 1.23 10 --> "12.3 billion"
config : Config
config = { standardConfig | getSuffix = suffixStandardShort }
formatSigExp config 1.23 10 --> "12.3B"
{ getSuffix : Basics.Int -> String
, locale : Locale
, sigfigs : Basics.Int
, suffixDivisor : Basics.Int
, minSuffix : Basics.Float
}
Configure how numbers are formatted.
getSuffix
returns a suffix, given a digit count for the number. See the suffix functions below.
sigfigs
is the number of significant figures shown.
Below minSuffix
, a comma-separated number is shown instead of a suffixed number.
standardConfig : Config
Default formatting configuration.
By default, we use standard suffixes, US locale, 3 significant figures, thousands grouping (suffixDivisor=3), and show no suffixes for values below 100,000.
scientificConfig : Config
Scientific notation formatting configuration.
config : Config
config = scientificConfig
format config 1.0e3 --> "1,000"
format config 1.0e6 --> "1.00e6"
format config 1.0e7 --> "1.00e7"
format config 1.0e8 --> "1.00e8"
format config 1.0e9 --> "1.00e9"
FormatNumber.Locales.Locale
Format numbers differently based on the user's location and culture.
See cuducos/elm-format-number:FormatNumber.Locales
.
This does not change the language suffixes are in, only the formatting of the numbers themselves. Consider this with a custom suffix list if you need complete internationalization.
import FormatNumber.Locales
spanishConfig : Config
spanishConfig = { standardConfig | locale = FormatNumber.Locales.spanishLocale }
format standardConfig 1234 --> "1,234"
format spanishConfig 1234 --> "1.234"
You'll usually use one of the built-in suffix lists below, but you could write your own. Here's a modified scientific notation suffix generator:
suffixPow10 : Int -> String
suffixPow10 digits = " * 10 ^ " ++ String.fromInt digits
config : Config
config = { scientificConfig | getSuffix = suffixPow10 }
format config 1e6 --> "1.00 * 10 ^ 6"
suffixStandard : Basics.Int -> String
Standard suffixes.
config : Config
config = { standardConfig | getSuffix = suffixStandard }
-- `config = standardConfig` would work too; this is the default
format config 1e3 --> "1,000"
format config 1e5 --> "100 thousand"
format config 1e6 --> "1.00 million"
format config 1e9 --> "1.00 billion"
format config 1e12 --> "1.00 trillion"
format config 1e15 --> "1.00 quadrillion"
suffixStandardShort : Basics.Int -> String
Abbreviated standard suffixes.
config : Config
config = { standardConfig | getSuffix = suffixStandardShort }
format config 1e3 --> "1,000"
format config 1e5 --> "100K"
format config 1e6 --> "1.00M"
format config 1e9 --> "1.00B"
format config 1e12 --> "1.00T"
format config 1e15 --> "1.00Qa"
suffixEngineering : Basics.Int -> String
Engineering notation.
Unlike scientific notation, engineering notation numbers are always divisible by 3.
config : Config
config = { standardConfig | getSuffix = suffixEngineering }
format config 1e3 --> "1,000"
format config 1e5 --> "100E3"
format config 1e6 --> "1.00E6"
format config 1e7 --> "10.0E6"
format config 1e8 --> "100E6"
format config 1e9 --> "1.00E9"
suffixLongScale : Basics.Int -> String
Long-scale suffixes.
config : Config
config = { standardConfig | getSuffix = suffixLongScale }
format config 1e3 --> "1,000"
format config 1e5 --> "100 thousand"
format config 1e6 --> "1.00 million"
format config 1e9 --> "1.00 milliard"
format config 1e12 --> "1.00 billion"
format config 1e15 --> "1.00 billiard"
suffixLongScaleShort : Basics.Int -> String
Abbreviated long-scale suffixes.
config : Config
config = { standardConfig | getSuffix = suffixLongScaleShort }
format config 1e3 --> "1,000"
format config 1e5 --> "100K"
format config 1e6 --> "1.00M"
format config 1e9 --> "1.00Md"
format config 1e12 --> "1.00B"
format config 1e15 --> "1.00Bd"
suffixAlphabetic : Basics.Int -> String
Alphabetic suffixes.
config : Config
config = { standardConfig | getSuffix = suffixAlphabetic }
format config 1e3 --> "1,000"
format config 1e5 --> "100K"
format config 1e6 --> "1.00M"
format config 1e9 --> "1.00B"
format config 1e12 --> "1.00T"
format config 1e15 --> "1.00aa"
format config 1e18 --> "1.00ab"