# 数学

¥Math

JavaScript 中的数学运算。

¥Mathematical operations as known from JavaScript.

Math API 与 JavaScript (MDN (opens new window)) 非常相似,但有上述值得注意的例外,并且尚不支持剩余参数。

¥The Math API is very much like JavaScript's (MDN (opens new window)), with the notable exceptions stated above and rest parameters not being supported yet.

# 变体

¥Variants

AssemblyScript 中的数学有多种变体。

¥Math in AssemblyScript is available in multiple variants.

变体 描述
原生数学 f64 的 WebAssembly 实现
原生数学 f32 的 WebAssembly 实现
数学数学 f64 的 JavaScript 实现(从主机导入)

默认情况下,全局 Math 对象是 NativeMath 的别名,MathfNativeMathf 的别名。

¥By default, the global Math object is an alias of NativeMath and Mathf is an alias of NativeMathf .

# 使用 JSMath

¥Using JSMath

默认情况下,编译器使用直接在 WebAssembly 中实现的 NativeMath,但在小模块大小比性能更重要的情况下,可以选择通过在命令行上添加 --use Math=JSMath 来覆盖默认值,本质上是用 JSMath 别名 Math,这映射到 浏览器数学实现的导入。当然,此选项需要将浏览器的 Math 对象作为一个整体导入,但不需要播种/不可播种。在这种情况下,生成的绑定会自动导入浏览器的数学运算。

¥By default, the compiler utilizes NativeMath which is implemented in WebAssembly directly, but where small module size is more important than performance, one can opt to override the default by adding --use Math=JSMath on the command line, essentially aliasing Math with JSMath instead, which maps to an import of the browser's math implementation. Naturally, this option requires importing the browser's Math object as a whole, but does not require seeding / is not seedable. Generated bindings automatically take care of importing the browser's math in this scenario.

# 静态成员

¥Static members

下面的类型 T 根据所使用的实现来替代 f32f64。请注意,Math 实际上并不是通用的,但像 MathMathf 这样的具体实现具有相同的接口,仅在由 T 表示的实现浮点精度上有所不同。

¥The type T below substitutes either f32 or f64 depending on the implementation used. Note that Math is not actually generic, but concrete implementations like Math and Mathf have an identical interface that only differs in the implementation's floating-point precision denoted by T.

# 常量

¥Constants

  • const E: T
    

    自然对数的底 e,大约为 2.718。

    ¥The base of natural logarithms, e, approximately 2.718.

  • const LN2: T
    

    2 的自然对数,约为 0.693。

    ¥The natural logarithm of 2, approximately 0.693.

  • const LN10: T
    

    10 的自然对数,约为 2.302。

    ¥The natural logarithm of 10, approximately 2.302.

  • const LOG2E: T
    

    e 以 2 为底的对数,约为 1.442。

    ¥The base 2 logarithm of e, approximately 1.442.

  • const LOG10E: T
    

    e 以 10 为底的对数,约为 0.434。

    ¥The base 10 logarithm of e, approximately 0.434.

  • const PI: T
    

    圆的周长与其直径的比值,约为 3.14159。

    ¥The ratio of the circumference of a circle to its diameter, approximately 3.14159.

  • const SQRT1_2: T
    

    1/2 的平方根,约为 0.707。

    ¥The square root of 1/2, approximately 0.707.

  • const SQRT2: T
    

    2 的平方根,约为 1.414。

    ¥The square root of 2, approximately 1.414.

# 函数

¥Functions

  • function abs(x: T): T
    

    返回 x 的绝对值。

    ¥Returns the absolute value of x.

  • function acos(x: T): T
    

    返回 x 的反余弦(以弧度为单位)。

    ¥Returns the arccosine (in radians) of x.

  • function acosh(x: T): T
    

    返回 x 的双曲反余弦。

    ¥Returns the hyperbolic arc-cosine of x.

  • function asin(x: T): T
    

    返回 x. 的反正弦(以弧度为单位)

    ¥Returns the arcsine (in radians) of x.

  • function asinh(x: T): T
    

    返回 x 的双曲反正弦。

    ¥Returns the hyperbolic arcsine of x.

  • function atan(x: T): T
    

    返回 x 的反正切(以弧度为单位)。

    ¥Returns the arctangent (in radians) of x.

  • function atan2(y: T, x: T): T
    

    返回其参数商的反正切值。

    ¥Returns the arctangent of the quotient of its arguments.

  • function atanh(x: T): T
    

    返回 x 的双曲反正切值。

    ¥Returns the hyperbolic arctangent of x.

  • function cbrt(x: T): T
    

    返回 x 的立方根。

    ¥Returns the cube root of x.

  • function ceil(x: T): T
    

    返回大于或等于 x 的最小整数。

    ¥Returns the smallest integer greater than or equal to x.

  • function clz32(x: T): T
    

    返回 x 的 32 位二进制表示形式中前导零位数。

    ¥Returns the number of leading zero bits in the 32-bit binary representation of x.

  • function cos(x: T): T
    

    返回 x 的余弦(以弧度为单位)。

    ¥Returns the cosine (in radians) of x.

  • function cosh(x: T): T
    

    返回 x 的双曲余弦。

    ¥Returns the hyperbolic cosine of x.

  • function exp(x: T): T
    

    返回 e 的 x 次方。

    ¥Returns e to the power of x.

  • function expm1(x: T): T
    

    返回 e 的 x 次方,负 1。

    ¥Returns e to the power of x, minus 1.

  • function floor(x: T): T
    

    返回小于或等于 x 的最大整数。

    ¥Returns the largest integer less than or equal to x.

  • function fround(x: T): T
    

    返回 x 最接近的 32 位单精度浮点表示形式。

    ¥Returns the nearest 32-bit single precision float representation of x.

  • function hypot(value1: T, value2: T): T
    

    返回其参数平方和的平方根。

    ¥Returns the square root of the sum of squares of its arguments.

  • function imul(a: T, b: T): T
    

    返回 ab 的类 C 32 位乘法结果。

    ¥Returns the result of the C-like 32-bit multiplication of a and b.

  • function log(x: T): T
    

    返回 x 的自然对数(以 e 为底)。

    ¥Returns the natural logarithm (base e) of x.

  • function log10(x: T): T
    

    返回 x 以 10 为底的对数。

    ¥Returns the base 10 logarithm of x.

  • function log1p(x: T): T
    

    返回 1 + x 的自然对数(以 e 为底)。

    ¥Returns the natural logarithm (base e) of 1 + x.

  • function log2(x: T): T
    

    返回 x 以 2 为底的对数。

    ¥Returns the base 2 logarithm of x.

  • function max(value1: T, value2: T): T
    

    返回其参数的最大值。

    ¥Returns the largest-valued number of its arguments.

  • function min(value1: T, value2: T): T
    

    返回其参数的最小值。

    ¥Returns the lowest-valued number of its arguments.

  • function pow(base: T, exponent: T): T
    

    返回 baseexponent 次方。

    ¥Returns base to the power of exponent.

  • function random(): T
    

    返回 0.0(含)到 1.0(不含)范围内的伪随机数。

    ¥Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0.

    请注意,Math.random 需要一种方法来为随机数生成器提供种子,这是通过 特殊导入 env.seed 将种子作为 f64 值返回来实现的。生成的绑定和 WASI 会自动处理它。

    ¥Note that Math.random needs a way to seed the random number generator, which is achieved with a special import env.seed returning the seed as an f64 value. Generated bindings and WASI take care of it automatically.

  • function round(x: T): T
    

    返回 x 的值四舍五入到最接近的整数。

    ¥Returns the value of x rounded to the nearest integer.

  • function seedRandom(value: i64): void
    

    random 函数播种。如果尚未设置种子,则由 random 在内部调用。

    ¥Seeds the random function. Called internally by random if the seed hasn't been set.

  • function sign(x: T): T
    

    返回 x 的符号,指示该数字是正数、负数还是零。

    ¥Returns the sign of x, indicating whether the number is positive, negative or zero.

  • function signbit(x: T): bool
    

    返回 x 的符号位是否已设置。

    ¥Returns whether the sign bit of x is set.

  • function sin(x: T): T
    

    返回 x 的正弦值。

    ¥Returns the sine of x.

  • function sinh(x: T): T
    

    返回 x 的双曲正弦值。

    ¥Returns the hyperbolic sine of x.

  • function sqrt(x: T): T
    

    返回 x 的平方根。

    ¥Returns the square root of x.

  • function tan(x: T): T
    

    返回 x 的正切值。

    ¥Returns the tangent of x.

  • function tanh(x: T): T
    

    返回 x 的双曲正切。

    ¥Returns the hyperbolic tangent of x.

  • function trunc(x: T): T
    

    通过删除任何小数位来返回 x 的整数部分。

    ¥Returns the integer part of x by removing any fractional digits.

# 注意事项

¥Considerations

Math 实现旨在替代 JavaScript 的 Math 及其所有怪癖。例如,Math.round 始终向 +InfinityMath.imul 舍入,并且类似的函数在 number 上运行,即 AssemblyScript 中的 f64。因此,在可能的情况下直接使用 WebAssembly 的数学指令 通常会更有效。

¥The Math implementations are meant as a drop-in replacement for JavaScript's Math with all its quirks. For example, Math.round always rounds towards +Infinity and Math.imul and similar functions operate on number, which is f64 in AssemblyScript. Hence, using WebAssembly's math instructions directly where possible is often more efficient.