
# 数学函数概览
DLI所支持的数学函数如[数学函数]所示。
 表1数学函数 
| 函数                                                                                                       | 命令格式                                                                                       | 返回值                | 功能简介                                                                                                                                            |
|:---|:---|:---|:---|
| [abs](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_abs.html)                               | abs(DOUBLE a)                                                                              | DOUBLE或INT         | 取绝对值。                                                                                                                                           |
| [acos](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_acos.html)                             | acos(DOUBLE a)                                                                             | DOUBLE             | 返回给定角度a的反余弦值。                                                                                                                                   |
| [asin](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_asin.html)                             | asin(DOUBLE a)                                                                             | DOUBLE             | 返回给定角度a的反正弦值。                                                                                                                                   |
| [atan](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_atan.html)                             | atan(DOUBLE a)                                                                             | DOUBLE             | 返回给定角度a的反正切值。                                                                                                                                   |
| [bin](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_bin.html)                               | bin(BIGINT a)                                                                              | STRING             | 返回二进制格式。                                                                                                                                        |
| [bround](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_bround.html)                         | bround(DOUBLE a)                                                                           | DOUBLE             | HALF_EVEN模式四舍五入，与传统四舍五入方式的区别在于，对数字5进行操作时，由前一位数字来决定，前一位数字为奇数，增加一位，前一位数字为偶数，舍弃一位。例如：bround(7.5)=8.0，bround(6.5)=6.0                               |
| [bround](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_bround.html)                         | bround(DOUBLE a, INT d)                                                                    | DOUBLE             | 保留小数点后d位，d位之后数字以HALF_EVEN模式四舍五入。与传统四舍五入方式的区别在于，对数字5进行操作时，由前一位数字来决定，前一位数字为奇数，增加一位，前一位数字为偶数，舍弃一位。例如：bround(8.25, 1) = 8.2, bround(8.35, 1) = 8.4。 |
| [cbrt](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_cbrt.html)                             | cbrt(DOUBLE a)                                                                             | DOUBLE             | 返回a的立方根。                                                                                                                                        |
| [ceil](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_ceil.html)                             | ceil(DOUBLE a)                                                                             | DECIMAL            | 将参数向上舍入为最接近的整数。例如：ceil(21.2)，返回22。                                                                                                              |
| [conv](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_conv.html)                             | conv(BIGINT num, INT from_base, INT to_base), conv(STRING num, INT from_base, INT to_base) | STRING             | 进制转换，将from_base进制下的num转化为to_base进制下面的数。例如：将5从十进制转换为四进制，conv(5,10,4)=11。                                                                         |
| [cos](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_cos.html)                               | cos(DOUBLE a)                                                                              | DOUBLE             | 返回给定角度a的余弦值。                                                                                                                                    |
| [cot1](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_cot1.html)                             | cot1(DOUBLE a)                                                                             | DOUBLE或DECIMAL类型   | 计算number的余切函数，输入为弧度值。                                                                                                                           |
| [degress](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_degrees.html)                       | degrees(DOUBLE a)                                                                          | DOUBLE             | 返回弧度所对应的角度。                                                                                                                                     |
| [e](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_e.html)                                   | e()                                                                                        | DOUBLE             | 返回e的值。                                                                                                                                          |
| [exp](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_exp.html)                               | exp(DOUBLE a)                                                                              | DOUBLE             | 返回e的a次方。                                                                                                                                        |
| [factorial](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_factorial.html)                   | factorial(INT a)                                                                           | BIGINT             | 返回a的阶乘。                                                                                                                                         |
| [floor](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_floor.html)                           | floor(DOUBLE a)                                                                            | BIGINT             | 对给定数据进行向下舍入最接近的整数。例如：floor(21.2)，返回21。                                                                                                          |
| [greatest](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_greatest.html)                     | greatest(T v1, T v2, ...)                                                                  | DOUBLE             | 返回列表中的最大值。                                                                                                                                      |
| [hex](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_hex.html)                               | hex(BIGINT a) hex(STRING a)                                                                | STRING             | 将整数或字符转换为十六进制格式。                                                                                                                                |
| [least](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_least.html)                           | least(T v1, T v2, ...)                                                                     | DOUBLE             | 返回列表中的最小值。                                                                                                                                      |
| [ln](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_ln.html)                                 | ln(DOUBLE a)                                                                               | DOUBLE             | 返回给定数值的自然对数。                                                                                                                                    |
| [log](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_log.html)                               | log(DOUBLE base, DOUBLE a)                                                                 | DOUBLE             | 返回给定底数及指数返回自然对数。                                                                                                                                |
| [log10](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_log10.html)                           | log10(DOUBLE a)                                                                            | DOUBLE             | 返回给定数值的以10为底自然对数。                                                                                                                               |
| [log2](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_log2.html)                             | log2(DOUBLE a)                                                                             | DOUBLE             | 返回给定数值的以2为底自然对数。                                                                                                                                |
| [median](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_median.html)                         | median(colname)                                                                            | DOUBLE或DECIMAL     | 计算中位数。                                                                                                                                          |
| [negative](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_negative.html)                     | negative(INT a)                                                                            | DECIMAL或INT        | 返回a的相反数，例如negative(2)，返回-2。                                                                                                                     |
| percentile                                                                                               | percentile(colname,DOUBLE p)                                                               | DOUBLE或ARRAY       | 计算精确百分位数，适用于小数据量。先对指定列升序排列，然后取精确的第p位百分数。p必须在0和1之间。                                                                                              |
| [percentile_approx](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_percentlie_approx.html)   | percentile_approx (colname,DOUBLE p)                                                       | DOUBLE或ARRAY       | 计算近似百分位数，适用于大数据量。先对指定列升序排列，然后取第p位百分数对应的值。                                                                                                       |
| [pi](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_pi.html)                                 | pi()                                                                                       | DOUBLE             | 返回pi的值。                                                                                                                                         |
| [pmod](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_pmod.html)                             | pmod(INT a, INT b)                                                                         | DECIMAL或INT        | 返回a除b的余数的绝对值。                                                                                                                                   |
| [positive](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_positive.html)                     | positive(INT a)                                                                            | DECIMAL、DOUBLE或INT | 返回a的值，例如positive(2)，返回2。                                                                                                                        |
| [pow](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_pow.html)                               | pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p)                                         | DOUBLE             | 返回a的p次幂。                                                                                                                                        |
| [radians](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_radians.html)                       | radians(DOUBLE a)                                                                          | DOUBLE             | 返回角度所对应的弧度。                                                                                                                                     |
| [rand](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_rand.html)                             | rand(INT seed)                                                                             | DOUBLE             | 返回大于或等于0且小于1的平均分布随机数。如果指定种子seed，则会得到一个稳定的随机数序列。                                                                                                 |
| [round](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_round.html)                           | round(DOUBLE a)                                                                            | DOUBLE             | 四舍五入。                                                                                                                                           |
| [round](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_round.html)                           | round(DOUBLE a, INT d)                                                                     | DOUBLE             | 小数部分d位之后数字四舍五入，例如round(21.263,2)，返回21.26。                                                                                                       |
| [shiftleft](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_shiftleft.html)                   | shiftleft(BIGINT a, INT b)                                                                 | INT                | 有符号左边移，将a的二进制数按位左移b位。                                                                                                                           |
| [shiftright](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_shiftright.html)                 | shiftright(BIGINT a, INT b)                                                                | INT                | 有符号右移，将a的二进制数按位右移b位。                                                                                                                            |
| [shiftrightunsigned](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_shiftrightunsigned.html) | shiftrightunsigned(BIGINT a, INT b)                                                        | INT                | 无符号右移，将a的二进制数按位右移b位。                                                                                                                            |
| [sign](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_sign.html)                             | sign(DOUBLE a)                                                                             | DOUBLE             | 返回a所对应的正负号，a为正返回1.0，a为负，返回-1.0，否则返回0.0。                                                                                                         |
| [sin](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_sin.html)                               | sin(DOUBLE a)                                                                              | DOUBLE             | 返回给定角度a的正弦值。                                                                                                                                    |
| [sqrt](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_sqrt.html)                             | sqrt(DOUBLE a)                                                                             | DOUBLE             | 返回数值的平方根。                                                                                                                                       |
| [tan](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_tan.html)                               | tan(DOUBLE a)                                                                              | DOUBLE             | 返回给定角度a的正切值。                                                                                                                                    |
   
