Skip to main content
数学函数由 FunctionMath 提供,无需命名空间,直接调用即可。

数学常量

名称类型说明
PIdouble圆周率常量 Math.PI
Edouble自然常数 Math.E
print(&PI)    # => 3.141592653589793
print(&E)     # => 2.718281828459045

比较与范围

函数签名说明
minmin(a, b)返回较小的一个参数,支持可比较类型。
maxmax(a, b)返回较大的一个参数,支持可比较类型。
clampclamp(value, min, max)将数值限制在 [min, max] 区间内,并尽量保持原始数值类型。
min(1, 2)                 # => 1
max(1.5, 0.5)             # => 1.5
clamp(10, 0, 5)           # => 5
clamp(-5, 0, 100)         # => 0

绝对值与取整

函数签名说明
absabs(x)绝对值,自动根据参数类型返回 int / long / float / double
roundround(x)四舍五入到最接近的整数,返回整型数值。
floorfloor(x)向下取整,如 3.9 -> 3
ceilceil(x)向上取整,如 3.1 -> 4
signsign(x)符号函数,正数返回 1,负数返回 -1,零返回 0
abs(-3)                   # => 3
round(3.5)                # => 4
floor(3.9)                # => 3
ceil(3.1)                 # => 4
sign(-42)                 # => -1
sign(0)                   # => 0
sign(100)                 # => 1

三角函数

所有三角函数接受弧度值作为输入:
函数签名说明
sinsin(x)正弦函数。
coscos(x)余弦函数。
tantan(x)正切函数。
asinasin(x)反正弦,要求 x[-1, 1] 范围内,否则抛出异常。
acosacos(x)反余弦,要求 x[-1, 1] 范围内,否则抛出异常。
atanatan(x)反正切。
atan2atan2(y, x)两参数反正切,返回从正 x 轴到点 (x, y) 的角度(弧度)。
sin(PI / 2)               # => 1.0
cos(0)                    # => 1.0
atan2(1, 1)               # => 0.7853981633974483(即 PI/4)

指数、对数与幂

函数签名说明
expexp(x)计算 e^x
loglog(x)自然对数,要求 x > 0,否则抛出异常。
log10log10(x)以 10 为底的对数,要求 x > 0
powpow(base, exponent)幂运算;当指数与结果均为整数且有限时,尽量返回整数类型。
sqrtsqrt(x)平方根,要求 x >= 0,否则抛出异常。
cbrtcbrt(x)立方根,支持负数输入。
hypothypot(x, y)计算斜边长度 sqrt(x^2 + y^2),避免中间结果溢出。
pow(2, 10)                # => 1024
sqrt(9)                   # => 3.0
cbrt(27)                  # => 3.0
cbrt(-8)                  # => -2.0
log10(100)                # => 2.0
hypot(3, 4)               # => 5.0
幂运算也可以使用 ^ 运算符:2 ^ 10 等价于 pow(2, 10)

随机数

random 根据参数个数的不同,具有三种调用形式:
调用说明
random()返回 [0.0, 1.0) 之间的双精度随机数。
random(end)end 为整数类型,则返回 [0, end) 内的整数;若为浮点,则返回 [0.0, end)end 必须为正数。
random(start, end)[start, end) 区间生成随机数;若两端均为整数,则返回区间内整数,否则返回浮点数。要求 start < end
random()                  # => 0.0 到 1.0 之间
random(10)                # => 0 到 9 之间的整数
random(5, 10)             # => 5 到 9 之间的整数
random(0.0, 1.0)          # => 0.0 到 1.0 之间的浮点数

角度与插值

函数签名说明
radrad(deg)将角度转换为弧度。
degdeg(rad)将弧度转换为角度。
lerplerp(start, end, t)线性插值,计算 start + (end - start) * t
rad(180)                  # => 3.141592653589793(即 PI)
deg(PI)                   # => 180.0
lerp(0, 10, 0.25)         # => 2.5
lerp(0, 100, 0.5)         # => 50.0

相关链接