JavaScript Math

JavaScript 内置 Math 对象封装了一些数学相关的静态属性常量和静态工具类方法,方便我们进行数学计算。

JavaScript 内置 Math 对象封装了一些数学相关的属性常量和工具类方法,方便我们进行数学计算。

Math 对象的所有属性和方法都是静态,这意味着可以直接用 Math 对象调用属性和方法,而无须先使用构造函数构造对象。事实上, Math 对象没有构造函数。

Math.PI; // 圆周率的值: 3.141592653589793
Math.abs(x); // 返回数 x 的绝对值

Math 属性(常数)

Math 对象定义了 8 个常用的数学常量属性:

属性 说明
Math.E 欧拉常数,也是自然对数的底数,约等于 2.718
Math.PI 圆周率,一个圆的周长和直径之比,约等于 3.14159
Math.SQRT2 二分之一的平方根,同时也是 2 的平方根的倒数,约等于 0.707
Math.SQRT1_2 2 的平方根,约等于 1.414
Math.LN2 2 的自然对数,约等于 0.693
Math.LN10 10 的自然对数,约等于 2.303
Math.LOG2E 2 为底的 E 的对数,约等于 1.443
Math.LOG10E 10 为底的 E 的对数,约等于 0.434

Math 方法

Math 对象定义了 35 个常用的数学计算方法:

属性 说明
Math.abs(x) 返回一个数的绝对值。
Math.acos(x) 返回一个数的反余弦值。
Math.acosh(x) 返回一个数的反双曲余弦值。
Math.asin(x) 返回一个数的反正弦值。
Math.asinh(x) 返回一个数的反双曲正弦值。
Math.atan(x) 返回一个数的反正切值。
Math.atanh(x) 返回一个数的反双曲正切值。
Math.atan2(y, x) 返回 y/x 的反正切值。
Math.cbrt(x) 返回一个数的立方根。
Math.ceil(x) 返回大于一个数的最小整数,即一个数向上取整后的值。
Math.clz32(x) 返回一个 32 位整数的前导零的数量。
Math.cos(x) 返回一个数的余弦值。
Math.cosh(x) 返回一个数的双曲余弦值。
Math.exp(x) 返回欧拉常数的参数次方 Ex,其中 x 为参数,E 是欧拉常数(2.718…,自然对数的底数)。
Math.expm1(x) 返回 Math.exp(x) - 1 的值。
Math.floor(x) 返回小于一个数的最大整数,即一个数向下取整后的值。
Math.fround(x) 返回最接近一个数的单精度浮点型表示。
Math.hypot([x[, y[, …]]]) 返回其所有参数平方和的平方根。
Math.imul(x, y) 返回 32 位整数乘法的结果。
Math.log(x) 返回一个数的自然对数(㏒e,即 ㏑)。
Math.log1p(x) 返回一个数加 1 的和的自然对数(㏒e,即 ㏑)。
Math.log10(x) 返回一个数以 10 为底数的对数。
Math.log2(x) 返回一个数以 2 为底数的对数。
Math.max([x[, y[, …]]]) 返回零到多个数值中最大值。
Math.min([x[, y[, …]]]) 返回零到多个数值中最小值。
Math.pow(x, y) 返回一个数的 y 次幂。
Math.random() 返回一个 0 到 1 之间的伪随机数。
Math.round(x) 返回四舍五入后的整数。
Math.sign(x) 返回一个数的符号,得知一个数是正数、负数还是 0。 (ES6 新增)
Math.sin(x) 返回一个数的正弦值。
Math.sinh(x) 返回一个数的双曲正弦值。
Math.sqrt(x) 返回一个数的平方根。
Math.tan(x) 返回一个数的正切值。
Math.tanh(x) 返回一个数的双曲正切值。
Math.toSource() 返回字符串 “Math”。
Math.trunc(x) 返回一个数的整数部分,直接去除其小数点及之后的部分。

数字取整

数字取整常用方法有 4 种:

  • Math.ceil(x) : 返回大于一个数的最小整数,即一个数向上取整后的值。
  • Math.floor(x): 返回小于一个数的最大整数,即一个数向下取整后的值。
  • Math.round(x): 返回四舍五入后的整数。
  • Math.trunc(x): 返回一个数的整数部分,直接去除其小数点及之后的部分。

Math.ceil()

Math.ceil(x) 返回一个数 x 向上取整后的值:

Math.ceil(4.9); // 返回 5
Math.ceil(4.7); // 返回 5
Math.ceil(4.4); // 返回 5
Math.ceil(4.2); // 返回 5
Math.ceil(-4.2); // 返回 -4

Math.floor()

Math.floor(x) 返回一个数 x 向下取整后的值:

Math.floor(4.9); // 返回 4
Math.floor(4.7); // 返回 4
Math.floor(4.4); // 返回 4
Math.floor(4.2); // 返回 4
Math.floor(-4.2); // 返回 -5

Math.round()

Math.round(x) 返回一个数 x 四舍五入后的整数:

Math.round(4.9); // 返回 5
Math.round(4.7); // 返回 5
Math.round(4.4); // 返回 4
Math.round(4.2); // 返回 4
Math.round(-4.2); // 返回 -4

Math.trunc()

Math.trunc(x) 返回一个数 x 的整数部分:

Math.trunc(4.9); // 返回 4
Math.trunc(4.7); // 返回 4
Math.trunc(4.4); // 返回 4
Math.trunc(4.2); // 返回 4
Math.trunc(-4.2); // 返回 -4

Math.sign()

Math.sign(x) 返回一个数 x 的符号,得知一个数是正数、负数还是 0。 此方法共有 5 种返回值, 分别是 1, -1, 0, -0, NaN. 代表的各是正数, 负数, 正零, 负零, NaN。

Math.sign(-4); // 返回 -1
Math.sign(0); // 返回 0
Math.sign(4); // 返回 1

Math.pow()

Math.pow(x, y) 返回 xy 次幂值:

Math.pow(8, 2); // 返回 64

Math.sqrt()

Math.sqrt(x) 返回 x 的平方根:

Math.sqrt(64); // 返回 8

Math.abs()

Math.abs(x) 返回 x 的绝对(正)值:

Math.abs(-4.7); // 返回 4.7

Math.sin()

Math.sin(x) 返回角度 x(以弧度给出)的正弦值(介于 -1 和 1 之间的值)。

如果要使用度数而不是弧度,则必须将度数转换为弧度:

以弧度为单位的角度 = 以度为单位的角度 x PI / 180。

Math.sin((90 * Math.PI) / 180); // 返回 1 ,单位是弧度

Math.cos()

Math.cos(x) 返回角度 x(以弧度给出)的余弦值(介于 -1 和 1 之间的值)。

如果要使用度数而不是弧度,则必须将度数转换为弧度:

以弧度为单位的角度 = 以度为单位的角度 x PI / 180。

Math.cos((0 * Math.PI) / 180); // 返回 1 ,单位是弧度

Math.min() 和 Math.max()

Math.min()Math.max() 可用于在参数列表中查找最小或最大值:

Math.min(0, 150, 30, 20, -8, -200); // 返回 -200
Math.max(0, 150, 30, 20, -8, -200); // 返回 150

Math.random()

Math.random() 返回 0(含)和 1(不含)之间的随机数:

Math.random(); // 返回 a random number

您将在本教程的下一章中了解有关 Math.random() 更多信息。

Math.log() 方法

Math.log(x) 返回一个数 x 的自然对数:

Math.log(1); // 返回 0

Math.log2() 方法

Math.log2(x) 返回一个数 x 的以 2 为底的对数。

我们必须乘以 2 多少次才能得到 8?

Math.log2(8); // 返回 3

Math.log10() 方法

Math.log10(x) 返回一个数 x 的以 10 为底的对数。

Math.log10(1000); // 返回 3