# 数学
与 JavaScript 中已知的数学运算。
Math API 非常类似于 JavaScript 的 (MDN (在新窗口打开)), 除了上面提到的显著例外,并且 rest 参数尚不支持。
# 变体
AssemblyScript 中的 Math 以多种变体提供。
变体 | 描述 |
---|---|
NativeMath | f64 的 WebAssembly 实现 |
NativeMathf | f32 的 WebAssembly 实现 |
JSMath | f64 的 JavaScript 实现(从宿主导入) |
默认情况下,全局 Math
对象是 NativeMath
的别名,Mathf
是 NativeMathf
的别名。
# 使用 JSMath
默认情况下,编译器使用 NativeMath
,它直接在 WebAssembly 中实现,但在模块大小比性能更重要的情况下,可以添加 --use Math=JSMath
到命令行以覆盖默认值,本质上将 Math
与 JSMath
设为别名,它映射到对浏览器数学实现的导入。当然,此选项需要将浏览器的 Math
对象整体导入,但不需要播种/不可播种。生成的绑定在此场景中会自动处理浏览器的数学导入。
# 静态成员
下面的类型 T
根据所用实现替换为 f32
或 f64
。请注意,Math
实际上不是泛型,但 Math
和 Mathf
等具体实现具有相同的接口,只是在实现的浮点精度方面有所不同,由 T
表示。
# 常量
const E: T
自然对数的底数 e,约为 2.718。
const LN2: T
2 的自然对数,约为 0.693。
const LN10: T
10 的自然对数,约为 2.302。
const LOG2E: T
e 的以 2 为底的对数,约为 1.442。
const LOG10E: T
e 的以 10 为底的对数,约为 0.434。
const PI: T
圆周长与其直径之比,约为 3.14159。
const SQRT1_2: T
1/2 的平方根,约为 0.707。
const SQRT2: T
2 的平方根,约为 1.414。
# 函数
function abs(x: T): T
返回
x
的绝对值。function acos(x: T): T
返回
x
的反余弦(以弧度为单位)。function acosh(x: T): T
返回
x
的双曲反余弦。function asin(x: T): T
返回
x
的反正弦(以弧度为单位)。function asinh(x: T): T
返回
x
的双曲反正弦。function atan(x: T): T
返回
x
的反正切(以弧度为单位)。function atan2(y: T, x: T): T
返回其参数商的反正切。
function atanh(x: T): T
返回
x
的双曲反正切。function cbrt(x: T): T
返回
x
的立方根。function ceil(x: T): T
返回大于或等于
x
的最小整数。function clz32(x: T): T
返回
x
的 32 位二进制表示中前导零位的数量。function cos(x: T): T
返回
x
的余弦(以弧度为单位)。function cosh(x: T): T
返回
x
的双曲余弦。function exp(x: T): T
返回 e 的
x
次方。function expm1(x: T): T
返回 e 的
x
次方减 1。function floor(x: T): T
返回小于或等于
x
的最大整数。function fround(x: T): T
返回
x
的最接近的 32 位单精度浮点数表示。function hypot(value1: T, value2: T): T
返回其参数的平方和的平方根。
function imul(a: T, b: T): T
返回
a
和b
的 C 风格 32 位乘法的结果。function log(x: T): T
返回
x
的自然对数(以 e 为底)。function log10(x: T): T
返回
x
的以 10 为底的对数。function log1p(x: T): T
返回 1 +
x
的自然对数(以 e 为底)。function log2(x: T): T
返回
x
的以 2 为底的对数。function max(value1: T, value2: T): T
返回其参数中值最大的数字。
function min(value1: T, value2: T): T
返回其参数中值最小的数字。
function pow(base: T, exponent: T): T
返回
base
的exponent
次方。function random(): T
返回范围从 0.0(包含)到 1.0(不包含)的伪随机数。
请注意,
Math.random
需要一种方式来播种随机数生成器,这可以通过 特殊导入env.seed
来实现,它将种子作为f64
值返回。生成的绑定和 WASI 会自动处理它。function round(x: T): T
返回将
x
四舍五入到最接近的整数的值。function seedRandom(value: i64): void
播种
random
函数。如果种子尚未设置,则由random
在内部调用。function sign(x: T): T
返回
x
的符号,指示该数字是正数、负数还是零。function signbit(x: T): bool
返回
x
的符号位是否已设置。function sin(x: T): T
返回
x
的正弦。function sinh(x: T): T
返回
x
的双曲正弦。function sqrt(x: T): T
返回
x
的平方根。function tan(x: T): T
返回
x
的正切。function tanh(x: T): T
返回
x
的双曲正切。function trunc(x: T): T
通过删除任何小数位返回
x
的整数部分。
# 注意事项
Math 实现旨在作为 JavaScript Math
的即插即用替换,具有其所有怪癖。例如,Math.round
始终向 +Infinity
四舍五入,Math.imul
和类似函数对 number
进行操作,在 AssemblyScript 中为 f64
。因此,在可能的情况下直接使用 WebAssembly 的数学指令 通常更高效。