Formatting Functions

Overview

These functions format numbers, dates, collections, and maps to strings according to the specified format.

Reference

Number formatting functions:

Number formatting objects:

Related date formatting functions and objects:

formatNumber

formatNumber(number x, string pattern) string

Formats number x with the specified DecimalFormat pattern using the server locale (US/US).

Example:

// returns 3.14
formatNumber(3.14159, '#.##')
1234.5678    #.##        ->    1234.56
1234.5678    #.###       ->    1234.567
1234.5678    #,###.###   ->   1,234.567
   0.5678    #.##        ->        .56
   0.5678    0.##        ->       0.56
  10         #.#         ->      10
  10         #.0         ->      10.0

NumberFormatter

NumberFormatter(string pattern [, string locale])

Unlike functions, which convert an input number to a string, the NumberFormatter is an object which is configured once as a variable and re-used to format any number into string using the same pattern and locale.

The formatter object provides two methods: format() and print() which return the same result.

Example:

// formatter is initialized as variable
nf = NumberFormatter('0.00')
// formatter is used to format numbers
nf.format(10)          ->      10.00
nf.format(3.1415)      ->       3.14

// format and add backticks for markdown
nf = NumberFormatter('`#,##0.0`')

formatPrecision

formatPrecision(double x, int digits) string

Formats number x based on toPrecision rules.

The digits must be between 1 and 100.

Example:

formatPrecision(3.14159265, 3)     // 3.14
formatPrecision(3.14159265, 4)     // 3.142
formatPrecision(10, 4)             // 10.00

formatBytes

formatBytes(number x, bool si) string

Returns the total number of bytes x in human-readable format. Identifies the largest possible unit (from Byte to Exabyte) such that the number x is equal to or exceeds 1 such unit. Units are decimal-based (1000) if the si parameter is set to true, and binary (1024) otherwise.

For example, if the unit is 1000 (si set to true):

999 -> 999.0 B  (unit is byte)
1000 ->   1.0 kB (unit is kilobyte)

Formatted number always contains one fractional digit.

Examples:

                 si=false    si=true
            0:        0 B        0 B
           27:       27 B       27 B
          999:      999 B      999 B
         1000:     1.0 kB     1000 B
         1023:     1.0 kB     1023 B
         1024:     1.0 kB    1.0 KiB
         1728:     1.7 kB    1.7 KiB
       110592:   110.6 kB  108.0 KiB
      7077888:     7.1 MB    6.8 MiB
    452984832:   453.0 MB  432.0 MiB
  28991029248:    29.0 GB   27.0 GiB
1855425871872:     1.9 TB    1.7 TiB

Unexpected Inputs

If the x argument is a string or an object that cannot be parsed into a number, the function returns the original value x.

convert

convert(number x, string unit) string

Divides the number x by the specified measurement unit and formats the returned string with one fractional digit.

The unit is case-insensitive and can be one of the following:

  • K, Kb (1000)
  • Ki, KiB (1024)
  • M, Mb (1000^2)
  • Mi, MiB (1024^2)
  • G, Gb (1000^3)
  • Gi, GiB (1024^3)
  • T, Tb (1000^4)
  • Ti, TiB (1024^4)
  • P, Pb (1000^5)
  • Pi, PiB (1024^5)
  • E, Eb (1000^6)
  • Ei, EiB (1024^6)

Examples:

// Returns 20.0
// same as formatNumber(20480/1024, '#.#')
convert(20480, 'KiB') // 20.0
convert(1000 * 1000, 'M') // 1.0