舍入函数
以下文档由 system.functions 系统表生成
ceil
引入版本:v1.1
类似于 floor,但返回大于或等于 x 的最小舍入值。
如果舍入导致溢出(例如 ceiling(255, -1)),结果未定义。
语法
别名: ceiling
参数
返回值
返回与 x 类型相同的舍入结果。Float* 或 Decimal* 或 (U)Int*
示例
基本用法
负精度
floor
引入于:v1.1
返回小于或等于 x 的最大舍入值,其中该值是 1 / 10 * N 的倍数;如果 1 / 10 * N 不是精确值,则返回该数据类型中与其最接近的数值。
当 N 为负数时,整数参数也会被舍入。
当 N 为非负数时,函数返回 x 本身。
如果舍入导致溢出(例如,floor(-128, -1)),结果未定义。
语法
参数
返回值
返回与 x 类型相同的舍入后的数值。Float* 或 Decimal* 或 (U)Int*
示例
用法示例
负精度
round
引入自:v1.1
将一个值四舍五入到指定的小数位数 N。
- 如果
N > 0,函数在小数点右侧进行舍入。 - 如果
N < 0,函数在小数点左侧进行舍入。 - 如果
N = 0,函数舍入到最接近的整数。
该函数返回在指定数量级上最接近的数。
如果输入值与两个相邻数的距离相等,对于 Float* 输入,函数使用银行家舍入法,对于其他数值类型(Decimal*)则采用远离零方向的舍入方式。
如果舍入导致溢出(例如 round(255, -1)),结果未定义。
语法
参数
返回值
返回一个与 x 类型相同的舍入后数值。Float* 或 Decimal* 或 (U)Int*
示例
浮点类型输入
十进制输入
roundAge
引入版本:v1.1
接收一个表示人的年龄的数字,将其与标准年龄区间进行比较,并返回该数字所在区间的最小值或最大值。
- 当
age < 1时,返回0。 - 当
1 ≤ age ≤ 17时,返回17。 - 当
18 ≤ age ≤ 24时,返回18。 - 当
25 ≤ age ≤ 34时,返回25。 - 当
35 ≤ age ≤ 44时,返回35。 - 当
45 ≤ age ≤ 54时,返回45。 - 当
age ≥ 55时,返回55。
语法
参数
返回值
返回 age 所在区间的上限或下限年龄值。UInt8
示例
用法示例
roundBankers
引入版本:v20.1
将一个数舍入到指定的小数位数 N。
如果要舍入的数正好位于两个数的中间,则函数使用一种称为银行家舍入(banker's rounding)的方法,这是 IEEE 754 中为浮点数规定的默认舍入方式。
- 如果
N > 0,函数会在小数点右侧进行舍入 - 如果
N < 0,函数会在小数点左侧进行舍入 - 如果
N = 0,函数会舍入到最接近的整数
- 当要舍入的数正好位于两个数的中间时,会在指定的小数位舍入到最近的偶数字。
例如:
3.5舍入为4,2.5舍入为2。 round函数对浮点数执行相同的舍入方式。roundBankers函数对整数也采用相同的舍入方式,例如,roundBankers(45, -1) = 40。- 在其他情况下,函数将数字舍入到最近的整数。
使用银行家舍入可以减小对这些数字进行舍入时对求和或求差结果的影响。
例如,对数字 1.5, 2.5, 3.5, 4.5 使用不同的舍入方式求和:
- 不舍入:
1.5 + 2.5 + 3.5 + 4.5 = 12。 - 银行家舍入:
2 + 2 + 4 + 4 = 12。 - 舍入到最近整数:
2 + 3 + 4 + 5 = 14。
语法
参数
返回值
返回按银行家舍入法得到的舍入结果。(U)Int* 或 Decimal* 或 Float*
示例
基本用法
roundDown
自 v20.1 引入
将数字向下取整到指定数组中的某个元素。 如果该值小于下限,则返回下限。
语法
参数
num— 要向下取整的数字。(U)Int*或Decimal*或Float*arr— 用于将num向下取整到其中某个值的元素数组。Array((U)Int*)或Array(Float*)
返回值
返回向下取整后与 arr 中某个元素对齐的数值。如果该值小于最小边界,则返回最小边界值。(U)Int* 或 Float*
示例
使用示例
roundDuration
自 v1.1 起引入
将一个数字向下取整为下列常用时长中最接近的值:1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000。
如果数字小于 1,则返回 0。
语法
参数
返回值
当 num < 1 时返回 0。否则返回下列值之一:1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000。UInt16
示例
使用示例
roundToExp2
引入于:v1.1
将数字向下舍入到最近的(非负整数)2 的整数次幂。
如果数字小于 1,则返回 0。
语法
参数
返回值
返回将 num 向下取为距离它最近的(非负的)2 的整数次幂;对于 num < 1,返回 0。(U)Int* 或 Float*
示例
使用示例
trunc
引入版本:v1.1
类似于 floor,但返回的是绝对值不大于 x 的绝对值、且绝对值最大的取整值。
语法
别名: truncate
参数
返回值
返回一个与 x 类型相同的舍入后数值。Float* 或 Decimal* 或 (U)Int*
示例
基本用法