Rounding functions
The documentation below is generated from the system.functions
system table
ceil
Introduced in: v1.1
Like floor
but returns the smallest rounded number greater than or equal to x
.
If rounding causes an overflow (for example, ceiling(255, -1)
), the result is undefined.
Syntax
Arguments
x
— The value to round.Float*
orDecimal*
or(U)Int*
N
— Optional. The number of decimal places to round to. Defaults to zero, which means rounding to an integer. Can be negative.(U)Int*
Returned value
Returns a rounded number of the same type as x
. Float*
or Decimal*
or (U)Int*
Examples
Basic usage
Negative precision
floor
Introduced in: v1.1
Returns the largest rounded number less than or equal to x
, where the rounded number is a multiple of 1 / 10 * N
, or the nearest number of the appropriate data type if 1 / 10 * N
isn't exact.
Integer arguments may be rounded with a negative N
argument.
With non-negative N
the function returns x
.
If rounding causes an overflow (for example, floor(-128, -1)
), the result is undefined.
Syntax
Arguments
x
— The value to round.Float*
orDecimal*
or(U)Int*
N
— Optional. The number of decimal places to round to. Defaults to zero, which means rounding to an integer. Can be negative.(U)Int*
Returned value
Returns a rounded number of the same type as x
. Float*
or Decimal*
or (U)Int*
Examples
Usage example
Negative precision
round
Introduced in: v1.1
Rounds a value to a specified number of decimal places N
.
- If
N > 0
, the function rounds to the right of the decimal point. - If
N < 0
, the function rounds to the left of the decimal point. - If
N = 0
, the function rounds to the next integer.
The function returns the nearest number of the specified order.
If the input value has equal distance to two neighboring numbers, the function uses banker's rounding for Float*
inputs and rounds away from zero for the other number types (Decimal*
).
If rounding causes an overflow (for example, round(255, -1)
), the result is undefined.
Syntax
Arguments
x
— A number to round.Float*
orDecimal*
or(U)Int*
N
— Optional. The number of decimal places to round to. Defaults to0
.(U)Int*
Returned value
Returns a rounded number of the same type as x
. Float*
or Decimal*
or (U)Int*
Examples
Float inputs
Decimal inputs
roundAge
Introduced in: v1.1
Takes a number representing a human age, compares it to standard age ranges, and returns either the highest or lowest value of the range the number falls within.
- Returns
0
, forage < 1
. - Returns
17
, for1 ≤ age ≤ 17
. - Returns
18
, for18 ≤ age ≤ 24
. - Returns
25
, for25 ≤ age ≤ 34
. - Returns
35
, for35 ≤ age ≤ 44
. - Returns
45
, for45 ≤ age ≤ 54
. - Returns
55
, forage ≥ 55
.
Syntax
Arguments
Returned value
Returns either the highest or lowest age of the range age
falls within. UInt8
Examples
Usage example
roundBankers
Introduced in: v20.1
Rounds a number to a specified decimal position N
.
If the rounding number is halfway between two numbers, the function uses a method of rounding called banker's rounding, which is the default rounding method for floating point numbers defined in IEEE 754.
- If
N > 0
, the function rounds to the right of the decimal point - If
N < 0
, the function rounds to the left of the decimal point - If
N = 0
, the function rounds to the next integer
- When the rounding number is halfway between two numbers, it's rounded to the nearest even digit at the specified decimal position.
For example:
3.5
rounds up to4
,2.5
rounds down to2
. - The
round
function performs the same rounding for floating point numbers. - The
roundBankers
function also rounds integers the same way, for example,roundBankers(45, -1) = 40
. - In other cases, the function rounds numbers to the nearest integer.
Using banker's rounding, you can reduce the effect that rounding numbers has on the results of summing or subtracting these numbers.
For example, sum numbers 1.5, 2.5, 3.5, 4.5
with different rounding:
- No rounding:
1.5 + 2.5 + 3.5 + 4.5 = 12
. - Banker's rounding:
2 + 2 + 4 + 4 = 12
. - Rounding to the nearest integer:
2 + 3 + 4 + 5 = 14
.
Syntax
Arguments
x
— A number to round.(U)Int*
orDecimal*
orFloat*
[, N]
— Optional. The number of decimal places to round to. Defaults to0
.(U)Int*
Returned value
Returns a value rounded by the banker's rounding method. (U)Int*
or Decimal*
or Float*
Examples
Basic usage
roundDown
Introduced in: v20.1
Rounds a number down to an element in the specified array. If the value is less than the lower bound, the lower bound is returned.
Syntax
Arguments
num
— A number to round down.(U)Int*
orDecimal*
orFloat*
arr
— Array of elements to roundnum
down to.Array((U)Int*)
orArray(Float*)
Returned value
Returns a number rounded down to an element in arr
. If the value is less than the lowest bound, the lowest bound is returned. (U)Int*
or Float*
Examples
Usage example
roundDuration
Introduced in: v1.1
Rounds a number down to the closest from a set of commonly used durations: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000
.
If the number is less than one, it returns 0
.
Syntax
Arguments
Returned value
Returns 0
, for num
< 1. Otherwise, one of: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000
. UInt16
Examples
Usage example
roundToExp2
Introduced in: v1.1
Rounds a number down to the nearest (whole non-negative) power of two.
If the number is less than one, it returns 0
.
Syntax
Arguments
Returned value
Returns num
rounded down to the nearest (whole non-negative) power of two, otherwise 0
for num < 1
. (U)Int*
or Float*
Examples
Usage example
trunc
Introduced in: v1.1
Like floor
but returns the rounded number with the largest absolute value less than or equal to that of x
.
Syntax
Arguments
x
— The value to round.Float*
orDecimal*
or(U)Int*
N
— Optional. The number of decimal places to round to. Defaults to zero, which means rounding to an integer.(U)Int*
Returned value
Returns a rounded number of the same type as x
. Float*
or Decimal*
or (U)Int*
Examples
Basic usage