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

四舍五入函数

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

返回值

  • 0,当 num <1\lt 1 时。 UInt8
  • num 向下四舍五入到最接近的(整体非负)二的幂。 UInt/Float,与输入类型等效。

示例

查询:

结果:

roundDuration

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

语法

参数

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

返回值

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

示例

查询:

结果:

roundAge

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

语法

参数

  • age: 表示年龄(年)的数字。 UInt/Float

返回值

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

类型: UInt8

示例

查询:

结果:

roundDown

接受一个数字并向下四舍五入到指定数组中的一个元素。如果该值小于最小值,则返回最小值。

语法

参数

  • num: 要向下四舍五入的数字。 Numeric
  • arr: 要向下四舍五入到的元素数组。 ArrayUInt/Float 类型。

返回值

  • 向下四舍五入到 arr 中一个元素的数字。如果该值小于最小值,则返回最小值。 UInt/Float 类型,从 arr 的类型推导得出。

示例

查询:

结果: