ClickHouse/docs/zh/query_language/functions/arithmetic_functions.md

77 lines
3.2 KiB
Markdown
Raw Normal View History

# 算术函数 {#suan-zhu-han-shu}
2019-05-05 17:38:05 +00:00
对于所有算术函数,结果类型为结果适合的最小数字类型(如果存在这样的类型)。最小数字类型是根据数字的位数,是否有符号以及是否是浮点类型而同时进行的。如果没有足够的位,则采用最高位类型。
例如:
``` sql
SELECT toTypeName(0), toTypeName(0 + 0), toTypeName(0 + 0 + 0), toTypeName(0 + 0 + 0 + 0)
```
┌─toTypeName(0)─┬─toTypeName(plus(0, 0))─┬─toTypeName(plus(plus(0, 0), 0))─┬─toTypeName(plus(plus(plus(0, 0), 0), 0))─┐
│ UInt8 │ UInt16 │ UInt32 │ UInt64 │
└───────────────┴────────────────────────┴─────────────────────────────────┴──────────────────────────────────────────┘
2019-05-05 17:38:05 +00:00
算术函数适用于UInt8UInt16UInt32UInt64Int8Int16Int32Int64Float32或Float64中的任何类型。
溢出的产生方式与C++相同。
## plus(a, b), a + b {#plusa-b-a-b}
2019-05-05 17:38:05 +00:00
计算数字的总和。
您还可以将Date或DateTime与整数进行相加。在Date的情况下添加的整数意味着添加相应的天数。对于DateTime这意味这添加相应的描述。
## minus(a, b), a - b {#minusa-b-a-b}
2019-05-05 17:38:05 +00:00
计算数字之间的差,结果总是有符号的。
您还可以将Date或DateTime与整数进行相减。见上面的plus
2019-05-05 17:38:05 +00:00
## multiply(a, b), a \* b {#multiplya-b-a-b}
2019-05-05 17:38:05 +00:00
计算数字的乘积。
## divide(a, b), a / b {#dividea-b-a-b}
2019-05-05 17:38:05 +00:00
计算数字的商。结果类型始终是浮点类型。
它不是整数除法。对于整数除法请使用intDiv函数。
当除以零时你得到inf- infnan
2019-05-05 17:38:05 +00:00
## intDiv(a, b) {#intdiva-b}
2019-05-05 17:38:05 +00:00
计算整数数字的商,向下舍入(按绝对值)。
除以零或将最小负数除以-1时抛出异常。
## intDivOrZero(a, b) {#intdivorzeroa-b}
2019-05-05 17:38:05 +00:00
intDiv的不同之处在于它在除以零或将最小负数除以-1时返回零。
2019-05-05 17:38:05 +00:00
## modulo(a, b), a % b {#moduloa-b-a-b}
2019-05-05 17:38:05 +00:00
计算除法后的余数。
如果参数是浮点数,则通过删除小数部分将它们预转换为整数。
其余部分与C++中的含义相同。截断除法用于负数。
除以零或将最小负数除以-1时抛出异常。
## negate(a), -a {#negatea-a}
2019-05-05 17:38:05 +00:00
计算一个数字的
用反转符号计算一个数字。结果始终是签名的。
Calculates a number with the reverse sign. The result is always signed.
## abs(a) {#arithm_func-abs}
2019-05-05 17:38:05 +00:00
计算数字a的绝对值。也就是说如果a lt; 0它返回-a。对于无符号类型它不执行任何操作。对于有符号整数类型它返回无符号数。
## gcd(a, b) {#gcda-b}
2019-05-05 17:38:05 +00:00
返回数字的最大公约数。
除以零或将最小负数除以-1时抛出异常。
## lcm(a, b) {#lcma-b}
2019-05-05 17:38:05 +00:00
返回数字的最小公倍数。
除以零或将最小负数除以-1时抛出异常。
2020-01-30 10:34:55 +00:00
[来源文章](https://clickhouse.tech/docs/en/query_language/functions/arithmetic_functions/) <!--hide-->