# 数学函数

用于执行各种数学运算的函数, 如四舍五入, 取幂, 平方等.

## 目录

- 一般数学
  - Abs: 返回数字的绝对值.
  - Ceil: 返回数字向上最近的整数(向上取整).
  - Exp: 返回 e 的 N 次方.
  - Floor: 返回数字向下最近的整数(向下取整).
  - Log: 返回数字的对数(10 为底).
  - Ln: 返回数字的自然对数(e 为底).
  - Max: 返回一个或多个数字的最大值.
  - Min: 返回一个或多个数字的最小值.
  - Mod: 返回除法的余数
  - Round: 返回数字四舍五入到 N 个小数位的数字.
  - Sqrt: 返回数字的平方根.
- 三角函数:
  - Sin: 返回数字的三角正弦值.
  - Cos: 返回数字的三角余弦值.
  - Tan: 返回数字的三角正切值.
  - ASin: 返回以弧度表示的反正弦值(其正弦值为指定的数字).
  - ACos: 返回以弧度表示的反余弦值(其余弦值为指定的数字).
  - ATan: 返回以弧度表示的反正切值(其正切值为指定的数字).
- 错误处理

## 一般数学

### Abs

返回 Number 的绝对值.

    Value := Abs(Number)

返回值类型和 Number 保持一致(整数或浮点数).

    MsgBox, % Abs(-1.2) ; 返回 1.2

### Ceil

返回 Number 向上取整后的整数(不含任何 .00 后缀).

    Value := Ceil(Number)

    MsgBox, % Ceil(1.2)  ; 返回 2
    MsgBox, % Ceil(-1.2) ; 返回 -1

### Exp

返回 e(近似值为 2.71828182845905) 的 N 次幂.

    Value := Exp(N)

N 可以为负数或小数. 要使用 e 之外其他数计算, 请使用 ** 运算符.

    MsgBox, % Exp(1.2) ; 返回 3.320117

### Floor

返回 Number 向下取整后的整数(不含任何 .00 后缀).

    Value := Floor(Number)

    MsgBox, % Floor(1.2)  ; 返回 1
    MsgBox, % Floor(-1.2) ; 返回 -2

### Log

返回 Number 的对数(10 为底).

    Value := Log(Number)

结果格式化为浮点数. 如果 Number 为负数则返回空字符串.

    MsgBox, % Log(1.2) ; 返回 0.079181

### Ln

返回 Number 底数为 e 的自然对数.

    Value := Ln(Number)

结果格式化为浮点数. 如果 Number 为负数则返回空字符串.

    MsgBox, % Ln(1.2) ; 返回 0.182322

### Max [v1.1.27+]

返回一个或多个数字的最大值.

    Value := Max(Number1 , Number2, ...)

如果其中一个输入值为非数字的, 则返回空字符串.

    MsgBox, % Max(2.11, -2, 0) ; 返回 2.11

您还可以指定一个可变参数来比较数组中的多个值. 例如:

    array := [1, 2, 3, 4]
    MsgBox, % Max(array*) ; 返回 4

### Min [v1.1.27+]

返回一个或多个数字的最小值.

    Value := Min(Number1 , Number2, ...)

如果其中一个输入值为非数字的, 则返回空字符串.

    MsgBox, % Min(2.11, -2, 0) ; 返回 -2

您还可以指定一个可变参数来比较数组中的多个值. 例如:

    array := [1, 2, 3, 4]
    MsgBox, % Min(array*) ; 返回 1

### Mod

取模. 返回 Dividend 除以 Divisor 之后的余数.

    Value := Mod(Dividend, Divisor)

返回值的正负符号总是与 Dividend 相同(而不考虑 Divisor), 例如, mod(5, 3) 和 mod(5, -3) 的结果都为 2, 但 mod(-5, 3) 和 mod(-5, -3) 的结果为 -2. 如果传入浮点数, 则返回值也是浮点数, 例如, mod(5.0, 3) 的结果为 2.0 而 mod(5, 3.5) 的结果为 1.5. 如果 Divisor 为 0, 则返回空值(空字符串).

    MsgBox, % Mod(7.5, 2) ; 返回 1.5(2 x 3 + 1.5)

### Round

返回 Number 四舍五入到 N 个小数位的数字.

    Value := Round(Number , N)

如果 N 省略或为 0, 表示对 Number 四舍五入后取整到最近的整数:

    MsgBox, % Round(3.14)    ; 返回 3

如果 N 为正数, 则 Number 四舍五入到 N 个小数位:

    MsgBox, % Round(3.14, 1) ; 返回 3.1

如果 N 为负数, 则 Number 四舍五入到小数点左边 N 位:

    MsgBox, % Round(345, -1) ; 返回 350, 这里的 -1 表示 5, 所以向上取整.
    MsgBox, % Round(345, -2) ; 返回 300, 因为 -2 表示 4, 所以向下取整.

不同于 Transform Round 语句, 无论 N 被省略还是小于 1, 返回值总是不含 .000 后缀. [v1.0.44.01+]: 当 N 的值大于 0 时, 总是精确显示 N 个小数点后位数, 而不会被 SetFormat 影响. 如果这不是您期望的效果, 请在 Round() 返回之后再进行一次数学运算; 例如: `Round(3.333, 1)+0`.

### Sqrt

返回 Number 的平方根.

    Value := Sqrt(Number)

结果格式化为浮点数. 如果 Number 为负数则函数返回空字值(空字符串).

    MsgBox, % Sqrt(16) ; 返回 4

## 三角函数

注意: 要将弧度值转换为度数值, 可用弧度乘以 180/pi(约为 57.29578). 要将度数值转为弧度值, 可用 读数值乘以 pi/180(约为 0.01745329252). pi 的值(约为 3.141592653589793) 为 4 乘以 1 的反正切的结果. (pi = 4 * ATan(1)).

### Sin

返回 Number 的正弦.

    Value := Sin(Number)

Number 必须为弧度值.

    MsgBox, % Sin(1.2) ; 返回 0.932039

### Cos

返回 Number 的余弦值.

    Value := Cos(Number)

Number 必须为弧度值.

    MsgBox, % Cos(1.2) ; 返回 0.362358

### Tan

返回 Number 的正切值.

    Value := Tan(Number)

Number 必须为弧度值.

    MsgBox, % Tan(1.2) ; 返回 2.572152

### ASin

返回弧度表示的反正弦值(其正弦值为 Number).

    Value := ASin(Number)

如果 Number 小于 -1 或大于 1, 则函数返回空值(空字符串).

    MsgBox, % ASin(0.2) ; 返回 0.201358

### ACos

返回弧度表示的反余弦值(其余弦值为 Number).

    Value := ACos(Number)

如果 Number 小于 -1 或大于 1, 则函数返回空值(空字符串).

    MsgBox, % ACos(0.2) ; 返回 1.369438

### ATan

返回弧度表示的反正切值(其正切值为 Number).

    Value := ATan(Number)

    MsgBox, % ATan(1.2) ; 返回 0.876058

## 错误处理

无效操作, 如除以零通常会产生一个空的结果(空字符串).

Abs, Max, Min 和 Mod 返回空字符串, 如果它们的传入参数是非数值的. 大多数数学函数不执行严格的类型检查, 因此可能会将非数值作为零或另一个数字处理. 例如, `Round("1.0foo")` 返回 1. 然而, 这一点预计会在 AutoHotkey v2 有所改变.

dftg