数学函数

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

目录

基础数学

Abs

返回指定数字的绝对值.

Value := Abs(Number)

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

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

Ceil

返回指定数字向上取整后的整数(不含任何 .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

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

Value := Floor(Number)
MsgBox, % Floor(1.2)  ; 返回 1
MsgBox, % Floor(-1.2) ; 返回 -2

Log

返回指定数字的对数(10 为底).

Value := Log(Number)

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

MsgBox, % Log(1.2) ; 返回 0.079181

Ln

返回指定数字底数为 e 的自然对数.

Value := Ln(Number)

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

MsgBox, % Ln(1.2) ; 返回 0.182322

Max [v1.1.27+]

返回一组数字中的最大值.

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

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

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

您还可以指定一个可变参数来传递数字数组. 例如:

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

Min [v1.1.27+]

返回一组数字中的最小值.

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

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

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

您还可以指定一个可变参数来传递数字数组. 例如:

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

Mod

取模. 返回一个数字(被除数) 除以另一个数字(除数) 的余数.

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

返回指定数字四舍五入到 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

返回指定数字的平方根.

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

返回指定数字的正弦.

Value := Sin(Number)

Number 必须为弧度值.

MsgBox, % Sin(1.2) ; 返回 0.932039

Cos

返回指定数字的余弦值.

Value := Cos(Number)

Number 必须为弧度值.

MsgBox, % Cos(1.2) ; 返回 0.362358

Tan

返回指定数字的正切值.

Value := Tan(Number)

Number 必须为弧度值.

MsgBox, % Tan(1.2) ; 返回 2.572152

ASin

返回弧度表示的反正弦值(其正弦值为指定数字).

Value := ASin(Number)

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

MsgBox, % ASin(0.2) ; 返回 0.201358

ACos

返回弧度表示的反余弦值(其余弦值为指定数字).

Value := ACos(Number)

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

MsgBox, % ACos(0.2) ; 返回 1.369438

ATan

返回弧度表示的反正切值(其正切值为指定数字).

Value := ATan(Number)
MsgBox, % ATan(1.2) ; 返回 0.876058

错误处理

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

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