Skip to content

Math 模块

Math 模块将标准数值函数组合在一起——符号和绝对值、三角函数、指数和对数、平方根、按指定小数位数舍入以及伪随机数生成。大多数成员返回 Double,因此中间结果在写回较窄的变量之前保持浮点形式。

符号和绝对值

Abs 返回其参数的绝对值——与零的距离,丢弃符号——并保留参数的数据类型,因此 Abs(-3#)DoubleAbs(-3)IntegerSgn 是其补充:丢弃绝对值,仅返回符号,为 -10+1。两者共同将一个数分解为符号和绝对值。

vb
Debug.Print Abs(-7.5)            ' 7.5
Debug.Print Sgn(-7.5)            ' -1

三角函数

SinCosTan 接受以弧度表示的角度,返回其正弦、余弦和正切。Atn 反向操作——给定正切值,返回该正切值对应的角度,范围为 -pi/2pi/2。这四个函数均以弧度工作;将角度乘以 pi / 180 转换为弧度,或将弧度乘以 180 / pi 转换回角度。

vb
Const Pi As Double = 3.14159265358979
Debug.Print Sin(Pi / 2)          ' 1
Debug.Print Atn(1) * 4           ' 3.14159265358979 — pi

其他反三角函数(反正弦、反余弦)和双曲函数未直接提供,但每个都可以从 AtnLogExpSqr 用几行代码推导——参见 AtnLogCos 的详细示例。

指数和对数

Expe(≈ 2.71828)提升到指定幂次,Log 是其逆运算,返回自然(以 e 为底)对数。要计算其他底数的对数,除以该底数的 LogLog(x) / Log(10) 为以 10 为底,Log(x) / Log(2) 为以 2 为底,依此类推。

vb
Debug.Print Exp(1)               ' 2.71828182845905 — e
Debug.Print Log(100) / Log(10)   ' 2 — base-10 log of 100

平方根

Sqr 返回非负数的平方根,以 Double 表示。传入负值会引发运行时错误而非返回复数或 NaN 结果;如果计算可能合法地产生负输入,请用 Sgn 或与零的比较来保护调用。

舍入

Round 使用银行家舍入法将数字舍入到指定小数位数——当值恰好位于两个可能结果的中间时,舍入到最接近的偶数数字,因此 Round(0.5, 0)0Round(1.5, 0)2。这避免了始终向上舍入的系统偏差,与 VBA 的行为一致。对于截断而非舍入,参见 Conversion 模块中的 IntFix;对于舍入到特定整数类型的窄化转换,参见 CIntCLng

随机数

Randomize 为伪随机数生成器设定种子,Rnd 从中提取,返回半开区间 [0, 1) 内的 Single。如果不显式调用 Randomize,每次程序运行时 Rnd 都会生成相同的序列——便于可重复测试;对于不可预测的输出,在启动时不带参数调用一次 Randomize,以便使用系统计时器作为种子。

lowerupper(含)之间均匀分布整数的标准惯用法结合了 RndInt

vb
Randomize
Dim Roll As Long
Roll = Int((6 - 1 + 1) * Rnd + 1)    ' a die roll, 1..6

成员

  • Abs -- 返回数字的绝对值
  • Atn -- 返回数字的反正切值(弧度)
  • Cos -- 返回角度的余弦值
  • Exp -- 返回 e 的指定幂次
  • Log -- 返回数字的自然(以 e 为底)对数
  • Randomize -- 初始化随机数生成器
  • Rnd -- 返回 [0, 1) 范围内的伪随机数
  • Round -- 使用银行家舍入法将数字舍入到指定小数位数
  • Sgn -- 返回数字的符号
  • Sin -- 返回角度的正弦值
  • Sqr -- 返回数字的平方根
  • Tan -- 返回角度的正切值

twinBASIC及其LOGO版权为作者"韦恩"所有