Math 属性
常用属性
Math.PI
圆周率,一个圆的周长和直径之比,约等于 3.14159.
Math.PI 运算
1 | Math.PI; //Expected 3.141592653589793, got 3.141592653589793 |
Math.E
欧拉常数,也是自然对数的底数, 约等于 2.718.
Math.LN2
2 的自然对数, 约等于 0.693.
Math.LN10
10 的自然对数, 约等于 2.303.
Math.LOG2E
以 2 为底 E 的对数, 约等于 1.443.
Math.LOG10E
以 10 为底 E 的对数, 约等于 0.434.
不常用属性
Math.SQRT1_2
1/2 的平方根, 约等于 0.707.
Math.SQRT2
2 的平方根,约等于 1.414.
Math 方法
常用方法
Math.random()
一个浮点型伪随机数字在 0(包括 0)和 1(不包括)之间
Math.sin(x)
返回正弦值.
1 | Math.sin(0); // 0 |
Math.cos(x)
返回 x 的余弦值。返回一个 -1 到 1 之间的数值,表示角度(单位:弧度)的余弦值
1 | Math.cos(0); // 1 |
Math.tan(x)
返回 x 的正切值.
Math.floor(x)
返回小于或等于 x 的最大整数(向下取整)
1 | Math.floor(45.95); |
Math.ceil(x)
返回 x 向上取整后的值。大于或等于给定数字的最小整数
1 | Math.ceil(0.95); // 1 |
Math.round(x)
返回四舍五入后的整数.
1 | Math.round(49.49); // 49 |
Math.abs(x)
返回 x 的绝对值.
1 | Math.abs("-1"); // 1 |
Math.log(x)
返回一个数的自然对数(loge, 即 ln)。
1 | Math.log(-1); // NaN, out of range |
Math.log10(x)
返回以 10 为底数的 x 的对数。如果传入的参数小于 0, 则返回 NaN
1 | Math.log10(10); // 1 |
Math.log2(x)
返回以 2 为底数的 x 的对数。如果传入的参数小于 0, 则返回 NaN
1 | Math.log2(2); // 1 |
Math.max([x[,y[,…]]])
返回 0 个到多个数值中最大值.
1 | Math.max(10, 20); // 20 |
Math.min([x[,y[,…]]])
返回 0 个到多个数值中最小值.
1 | Math.max(10, 20); // 10 |
Math.pow(x,y)
返回 x 的 y 次幂.
1 | // 如果 x 是 7 ,且 y 是 2,则 raisePower 函数返回 49 (7 的 2 次幂) |
Math.sqrt(x)
返回 x 的平方根.
1 | Math.sqrt(9); // 3 |
不常用方法
Math.acos(x)
返回 x 的反余弦值。以 -1 到 1 的一个数为参数,返回一个 0 到 pi (弧度)的数值。如果传入的参数值超出了限定的范围,将返回 NaN
1 | Math.acos(-2); // NaN |
Math.acosh(x)
返回 x 的反双曲余弦值。当参数小于 1 时, Math.acosh()将返回 NaN。
1 | Math.acosh(-1); // NaN |
Math.asin(x)
返回 x 的反正弦值。接受 -1 到 1 之间的数值作为参数,返回一个介于 - π2 到 π2 弧度的数值。如果接受的参数值超出范围,则返回 NaN
1 | Math.asin(-2); // NaN |
Math.asinh(x)
返回 x 的反双曲正弦值.
1 | Math.asinh(1); // 0.881373587019543 |
Math.atan(x)
以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值.
1 | Math.atan(1); // 0.7853981633974483 |
Math.atanh(x)
返回 x 的反双曲正切值。对于大于 1 或是小于-1 的值,函数返回 NaN
1 | Math.atanh(-2); // NaN |
Math.atan2(y, x)
返回 y/x 的反正切值。
返回一个 -pi 到 pi 之间的数值,表示点 (x, y) 对应的偏移角度。这是一个逆时针角度,以弧度为单位,正 X 轴和点 (x, y) 与原点连线 之间。注意此函数接受的参数:先传递 y 坐标,然后是 x 坐标。
atan2 接受单独的 x 和 y 参数,而 atan 接受两个参数的比值
1 | Math.atan2(90, 15) // 1.4056476493802699 |
Math.cbrt(x)
返回 x 的立方根。参数 x 会被自动类型转换成 number 类型
1 | Math.cbrt(NaN); // NaN |
Math.clz32(x)
返回一个 32 位整数的前导零的数量。
如果 x 不是数字类型, 则它首先会被转换成数字类型, 然后再转成 32 位无符号整形数字。
如果转换后的 32 位无符号整形数字是 0, 则返回 32, 因为此时所有位上都是 0。
NaN, Infinity, -Infinity 这三个数字转成 32 位无符号整形数字后都是 0。
这个函数主要用于那些编译目标为 JS 语言的系统中, 比如 Emscripten。
1 | Math.clz32(1); // 31 |
Math.cosh(x)
返回 x 的双曲余弦值.
1 | Math.cosh(0); // 1 |
Math.exp(x)
返回 Ex, 当 x 为参数, E 是欧拉常数 (2.718…), 自然对数的底.
1 | Math.exp(-1); // 0.36787944117144233 |
Math.expm1(x)
返回 exp(x)-1 的值.
1 | Math.expm1(1); // 1.7182818284590453 |
Math.fround(x)
返回数字的最接近的单精度浮点型表示。
JavaScript 内部使用 64 位的双浮点数字,支持很高的精度。但是,有时你需要用 32 位浮点数字,比如你从一个 Float32Array 读取值时。这时会产生混乱:检查一个 64 位浮点数和一个 32 位浮点数是否相等会失败,即使二个数字几乎一模一样。
要解决这个问题,可以使用 Math.fround() 来将 64 位的浮点数转换为 32 位浮点数。在内部,JavaScript 继续把这个数字作为 64 位浮点数看待,仅仅是在尾数部分的第 23 位执行了“舍入到偶数”的操作,并将后续的尾数位设置为 0。如果数字超出 32 位浮点数的范围,则返回 Infinity 或 -Infinity。
1 | Math.fround(1.5); // 1.5 |
Math.hypot([x[,y[,…]]])
返回其参数平方和的平方根。
1 | Math.hypot(3, 4); // 5 |
Math.imul(x)
返回 32 位整数乘法的结果。
1 | Math.imul(2, 4); // 8 |
Math.log1p(x)
返回 1 加上一个数字的的自然对数(loge, 即 ln)。如果参数的值小于 -1, 则返回 NaN
1 | Math.log1p(Math.E - 1); // 1 |
Math.sign(x)
返回 x 的符号函数, 判定 x 是正数,负数还是 0.
此函数共有 5 种返回值, 分别是 1, -1, 0, -0, NaN. 代表的各是正数, 负数, 正零, 负零, NaN
1 | Math.sign(3); // 1 |
Math.sinh(x)
返回 x 的双曲正弦值.
1 | Math.sinh(0); // 0 |
Math.tanh(x)
返回 x 的双曲正切值.
1 | Math.tanh(0); // 0 |
Math.toSource()
返回字符串 “Math”.
Math.trunc(x)
返回 x 的整数部分,去除小数.
1 | Math.trunc(13.37); // 13 |