Math Functions

AutoHotKey

数学函数

快速索引:

一般数学

Abs 绝对值

Value := Abs(Number)

返回 Number 的绝对值.

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

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

Ceil 向上取整

Value := Ceil(Number)

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

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

Exp 指数

Value := Exp(N)

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

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

MsgBox, % Exp(1.2) ; 返回 3.320117

Floor 向下取整

Value := Floor(Number)

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

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

Log 十进制对数

Value := Log(Number)

返回 Number 的十进制对数.

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

MsgBox, % Log(1.2) ; 返回 0.079181

Ln 自然对数

Value := Ln(Number)

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

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

MsgBox, % Ln(1.2) ; 返回 0.182322

Mod 取余数 (求模)

Value := Mod(Dividend, Divisor)

返回 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 为负数, 则返回空值 (空字符串).

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

Round 四舍五入

Value := Round(Number [, N])

返回 NumberN 设置的小数点后几位的数字.

如果 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 的平方根.

结果格式化为 浮点数. 如果 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 的正弦.

Number 必须为弧度值.

MsgBox, % Sin(1.2) ; 返回 0.932039

Cos 余弦

Value := Cos(Number)

返回 Number 的余弦值.

Number 必须为弧度值.

MsgBox, % Cos(1.2) ; 返回 0.362358

Tan 正切

Value := Tan(Number)

返回 Number 的正切值.

Number 必须为弧度值.

MsgBox, % Tan(1.2) ; 返回 2.572152

ASin 反正弦

Value := ASin(Number)

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

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

MsgBox, % ASin(0.2) ; 返回 0.201358

ACos 反余弦

Value := ACos(Number)

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

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

MsgBox, % ACos(0.2) ; 返回 1.369438

ATan 反正切

Value := ATan(Number)

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

MsgBox, % ATan(1.2) ; 返回 0.876058

错误处理

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

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