跳到主要内容
跳到主要内容

四舍五入函数

floor

返回不大于 x 的最大整除数。 整除数是 1 / 10 * N 的倍数,或者在 1 / 10 * N 不准确时的数据类型的最近值。

整数参数可以用负的 N 参数进行整除,使用非负的 N 时,函数返回 x,即不执行任何操作。

如果整除导致溢出(例如 floor(-128, -1)),结果是不确定的。

语法

参数

  • x - 要四舍五入的值。 Float*, Decimal*, 或 (U)Int*
  • N . (U)Int*。 默认值为零,意味着四舍五入到整数。 可以是负数。

返回值

x 相同类型的整除数。

示例

查询:

结果:

查询:

结果:

ceiling

类似于 floor,但是返回不小于 x 的最小整除数。

语法

别名: ceil

truncate

类似于 floor,但是返回绝对值最大的整除数,该绝对值小于或等于 x 的绝对值。

语法

别名: trunc

示例

查询:

round

将值四舍五入到指定的小数位数。

该函数返回指定阶数的最近值。 如果输入值与两个相邻数的距离相等,函数对 Float* 输入使用银行家舍入,对其他数字类型 (Decimal*) 采用远离零的舍入。

语法

参数

  • x — 需要四舍五入的数字。 Float*, Decimal*, 或 (U)Int*
  • N — 要四舍五入的小数位数。 整数。 默认值为 0
    • 如果 N > 0,函数四舍五入到小数点的右侧。
    • 如果 N < 0,函数四舍五入到小数点的左侧。
    • 如果 N = 0,函数四舍五入到下一个整数。

返回值:

x 相同类型的整除数。

示例

使用 Float 输入的示例:

使用 Decimal 输入的示例:

要保留尾随零,启用设置 output_format_decimal_trailing_zeros

四舍五入至最近数的示例:

银行家舍入。

另请参见

roundBankers

将数字四舍五入到指定的小数位。

如果舍入的数字正好位于两个数之间,函数使用银行家舍入。 银行家舍入是一种舍入分数数字的方法 当舍入数字位于两个数字之间时,它会舍入到指定小数位上的最近偶数。 例如:3.5 舍入到 4,2.5 舍入到 2。 这是在 IEEE 754 中定义的浮点数的默认舍入方法。 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。

语法

参数

  • N > 0 — 函数将数字舍入到小数点右侧的给定位置。 示例:roundBankers(3.55, 1) = 3.6

  • N < 0 — 函数将数字舍入到小数点左侧的给定位置。 示例:roundBankers(24.55, -1) = 20

  • N = 0 — 函数将数字舍入到整数。在这种情况下,可以省略参数。 示例:roundBankers(2.5) = 2

  • x — 需要四舍五入的数字。 Float*, Decimal*, 或 (U)Int*

  • N — 要四舍五入的小数位数。 整数。 默认值为 0

    • 如果 N > 0,函数四舍五入到小数点的右侧。
    • 如果 N < 0,函数四舍五入到小数点的左侧。
    • 如果 N = 0,函数四舍五入到下一个整数。

返回值

使用银行家舍入方法舍入的值。

示例

查询:

结果:

银行家舍入的示例:

另请参见

roundToExp2

接受一个数字。如果该数字小于一,则返回 0。否则,将数字舍入到最近的(非负的)两个的整数次幂。

语法

参数

  • num: 需要四舍五入的数字。 UInt/Float

返回值

  • num <1\lt 1 时返回 0UInt8
  • num 四舍五入到最近的(非负的)两个的整数次幂。 UInt/Float 与输入类型相同。

示例

查询:

结果:

roundDuration

接受一个数字。如果该数字小于一,则返回 0。否则,将数字四舍五入到常用持续时间集合中的数字:1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000

语法

参数

  • num: 需要四舍五入到常用持续时间集合中的数字。 UInt/Float

返回值

  • num <1\lt 1 时返回 0
  • 否则,返回一个: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000UInt16

示例

查询:

结果:

roundAge

接受一个数字,该数字在常用的人类年龄范围内,并返回该范围内的最大值或最小值。

语法

参数

  • age: 表示岁数的数字。 UInt/Float

返回值

  • age<1age \lt 1 时返回 0
  • 1age171 \leq age \leq 17 时返回 17
  • 18age2418 \leq age \leq 24 时返回 18
  • 25age3425 \leq age \leq 34 时返回 25
  • 35age4435 \leq age \leq 44 时返回 35
  • 45age5445 \leq age \leq 54 时返回 45
  • age55age \geq 55 时返回 55

类型: UInt8

示例

查询:

结果:

roundDown

接受一个数字,并将其取整到指定数组中的一个元素。如果值小于下限,则返回下限。

语法

参数

  • num: 需要向下舍入的数字。 Numeric
  • arr: 要将 age 向下舍入到的元素数组。 Array 类型为 UInt/Float

返回值

  • 向下舍入到 arr 中元素的数字。如果值小于下限,则返回下限。 UInt/Float 的类型根据 arr 的类型推断。

示例

查询:

结果: