# Working with Numbers and Currency in Airscript

Airscript supports arithmetic on numbers and provides a large library of functions for dealing with numbers..

• MAX - Returns the largest number of a list of numbers
• MIN - Returns the smallest number from a list of numbers
• ABS - Returns the absolute value of a number
• ROUND - Rounds a number
• FLOOR - Returns the integer at or below a number (1.1 becomes 1)
• CEILING - Returns the integer at or above a number (1.1 becomes 2)
• PI - Returns the constant π
• RANDOM - Returns a random number

## Displaying Numbers in Text

When displaying a number such as 100001 it is more readable to the user to denote where the thousands place is. In the United States, there will be a comma to denote the thousandth's place: 100,001. However, in Europe, there will be a period to denote the thousandth's place: 100.001. Displaying a number with the wrong formatting for your user can cause confusion. The FORMAT_NUMBER number function will convert a number into a string with a given format. To display a number using thousandths separators use the format string ",", the correct locale will be selected for the user by default.

FORMAT_NUMBER(100001, ",") => "100,001"

When displaying decimal numbers there are two options, fixed precision, or significant digits. Fixed precision will always display the same number of digits after the decimal point.

FORMAT_NUMBER(100001, ".2f") => "100001.00"
FORMAT_NUMBER(3.1459, ".2f") => "3.14"

To format a number using significant digits omit the f in the format string.

FORMAT_NUMBER(100001, "") => "1e+5"
FORMAT_NUMBER(3.1459, ".2") => "3.1"

Thousandths separators can be combined with precision.

FORMAT_NUMBER(100001, ",.2f") => "100,001.00"

Finally, there are occasions where a number should not be formatted at all, these cases usually involve a number that is meant to be read by a computer or external system. Use an empty string for these cases.

FORMAT_NUMBER(100001, "") => "100001"

## Parsing Numbers from Text

To parse a number from a string use the PARSE_NUMBER function.

PARSE_NUMBER("100,001") => 100001
PARSE_NUMBER("3.14159") => 3.14159

## Working with Currency

While currency is measured using a number, it also requires a unit. One U.S. dollar ("USD") is different from one Canadian dollar ("CAD")

CURRENCY(1, "USD", 0)

However, one U.S. dollar is the same as one-hundred U.S. pennies.

CURRENCY(1, "USD", 0)
CURRENCY(100, "USD", 2)

To represent this, in addition to an amount, the Currency type has a code that represents which currency it is (U.S. vs Canadian dollars), and a precision to represent the denomination (dollars vs pennies).

It is important to pick the smallest denomination possible for a given currency because when working with decimal numbers small errors can be introduced. For this reason, when working with "USD" it is recommended to use at least a precision of 2 to represent pennies to avoid having to use decimal numbers like 0.01.

When displaying a currency to a user use the FORMAT_CURRENCY function, it will create a string that displays the currency to the user while taking into account the user's locale. For a user with a U.S. locale

FORMAT_CURRENCY(one_hundred_us_pennies) => "$1.00" while for a user with a Canadian locale FORMAT_CURRENCY(one_hundred_us_pennies) => "US$1.00"

The PARSE_CURRENCY function will go in the opposite direction, it will parse a string like "\$1.00" into a currency representing 100 cents.

### Number Examples

• MAX - Returns the largest number of a list of numbers
• MIN - Returns the smallest number from a list of numbers
• ABS - Returns the absolute value of a number
• ROUND - Rounds a number
• FLOOR - Returns the integer at or below a number (1.1 becomes 1)
• CEILING - Returns the integer at or above a number (1.1 becomes 2)
• PI - Returns the constant π
• RANDOM - Returns a random number
• PARSE_NUMBER - Parses a number from a string
• FORMAT_NUMBER - Formats a number into a string
• FORMAT_CURRENCY - Converts a currency to a string
• PARSE_CURRENCY - Converts a string into a currency