ClickHouse/docs/zh/query_language/functions/arithmetic_functions.md
2020-01-30 13:34:55 +03:00

80 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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