第六章 JavaScript标准库 6.5 Math 类型

161 阅读7分钟

6.5 Math 类型

在 JavaScript 中,Math 是一个内置的数学对象,它提供了许多数学函数和常量。

Math 上的常量

Math.PI:π 的值,等于 3.141592653589793。 Math.E:自然对数的底数 e 的值,等于 2.718281828459045。 Math.SQRT2:根号 2 的值,等于 1.4142135623730951。 Math.SQRT1_2:根号 1/2 的值,等于 0.7071067811865476。 Math.LN2:2 的自然对数,等于 0.6931471805599453。 Math.LN10:10 的自然对数,等于 2.302585092994046。 Math.LOG2E:以 2 为底 e 的对数,等于 1.4426950408889634。 Math.LOG10E:以 10 为底 e 的对数,等于 0.4342944819032518。 Math 上的方法 Math 上的方法有很多,但是我们常用的可能就那么几个,剩下不常用的方法,如果不是在特定领域进行数据运算,应该是很少用到,所以就详细的讲解下常用的方法,不常用的方法就列举出来。

Math 上常用的方法

Math.max(x, y, z, ...):返回一组数字中的最大值。 Math.min(x, y, z, ...):返回一组数字中的最小值。 Math.round(x):返回 x 的四舍五入整数值。 Math.floor(x):返回小于或等于 x 的最大整数。 Math.ceil(x):返回大于或等于 x 的最小整数。 Math.abs(x):返回 x 的绝对值。 Math.random():返回一个介于 0(包括 0)和 1(不包括 1)之间的随机数。

Math.max

Math.max(x, y, z, ...)它接受一系列数字参数并返回这些数字中的最大值。 例如,Math.max(1, 2, 3) 返回 3,因为 3 是这些数字中的最大值。 Math.max() 函数可以接受任意数量的参数,也可以接受非数字参数,但是在比较这些参数时,会将它们转换为数字类型。如果某个参数无法转换为数字类型,则返回 NaN(非数字)。 例如,Math.max(1, "2", 3) 也返回 3,因为字符串 "2" 会被转换为数字 2。而 Math.max(1, "hello", 3) 返回 NaN,因为字符串 "hello" 无法转换为数字类型。 需要注意的是,如果没有传递任何参数给 Math.max() 函数,则它会返回 -Infinity(负无穷大)。 如果需要在一个数组中找到最大值,可以使用 apply() 方法将数组作为参数传递给 Math.max() 函数。例如:

var arr = [1, 2, 3];
var max = Math.max.apply(null, arr);
console.log(max); // 输出 3

在这个示例中,apply() 方法将 arr 数组作为参数传递给 Math.max() 函数,从而计算出数组中的最大值。需要注意的是,第一个参数传递了 null,因为在这个示例中,我们不需要使用 this 对象。

Math.min

Math.min 和 Math.max 类型,只是它取的是最小值。例如,Math.min(1, 2, 3) 返回 1,因为 1 是这些数字中的最小值。 Math.min() 函数可以接受任意数量的参数,也可以接受非数字参数,但是在比较这些参数时,会将它们转换为数字类型。如果某个参数无法转换为数字类型,则返回 NaN(非数字)。 例如,Math.min(1, "2", 3) 也返回 1,因为字符串 "2" 会被转换为数字 2。而 Math.min(1, "hello", 3) 返回 NaN,因为字符串 "hello" 无法转换为数字类型。 需要注意的是,如果没有传递任何参数给 Math.min() 函数,则它会返回 Infinity(正无穷大)。 如果需要在一个数组中找到最小值,可以使用 apply() 方法将数组作为参数传递给 Math.min() 函数。例如:

var arr = [1, 2, 3];
var min = Math.min.apply(null, arr);
console.log(min); // 输出 1

在这个示例中,apply() 方法将 arr 数组作为参数传递给 Math.min() 函数,从而计算出数组中的最小值。需要注意的是,第一个参数传递了 null,因为在这个示例中,我们不需要使用 this 对象。

Math.round

Math.round() 是 JavaScript 中的一个函数,用于将一个数字四舍五入为最接近的整数。 例如,Math.round(1.49) 返回 1, Math.round(1.5) 返回 2。 Math.round() 函数也可以接受负数作为参数。例如,Math.round(-1.5) 返回 -1。 需要注意的是,如果参数是 NaN(非数字),则返回 NaN。 下面是一些使用 Math.round() 函数的示例:

Math.round(1.23); // 返回 1
Math.round(1.5); // 返回 2
Math.round(1.75); // 返回 2
Math.round(-1.23); // 返回 -1
Math.round(-1.5); // 返回 -1 记住是往坐标轴的右边是入
Math.round(-1.75); // 返回 -2

需要注意的是,当参数为 0 时, Math.round() 函数将返回 0。当参数为 Infinity(正无穷大)或-Infinity(负无穷大)时,将返回 Infinity 或-Infinity。

Math.round(0); // 返回 0
Math.round(Infinity); // 返回 Infinity
Math.round(-Infinity); // 返回 -Infinity

Math.floor

Math.floor() 是用于将一个数字向下取整,即取这个数字在坐标轴上向左的第一个整数,如果数字本身就是整数那就返回它本身。例如,Math.floor(1.23) 返回 1,而 Math.floor(2.99) 返回 2。Math.floor() 函数也可以用于负数。例如,Math.floor(-1.23) 返回 -2,而 Math.floor(-2.99) 返回 -3。如果参数是 NaN(非数字),则返回 NaN。当参数为正无穷大时,将返回正无穷大,当参数为负无穷大时,将返回负无穷大,当参数为 0 时, Math.floor() 函数将返回 0。 下面是一些使用 Math.floor() 函数的示例:

Math.floor(1.23); // 返回 1
Math.floor(2.99); // 返回 2
Math.floor(-1.23); // 返回 -2
Math.floor(-2.99); // 返回 -3

Math.ceil

Math.ceil() 是用于将一个数字向上取整,即取这个数字在坐标轴上向右的第一个整数,如果数字本身就是整数那就返回它本身。例如,Math.ceil(1.23) 返回 2,而 Math.ceil(2.99) 返回 3。,Math.ceil() 函数也可以用于负数。例如,Math.ceil(-1.23) 返回 -1,而 Math.ceil(-2.99) 返回 -2。如果参数是 NaN(非数字),则返回 NaN。,当参数为正无穷大时,将返回正无穷大,当参数为负无穷大时,将返回负无穷大,当参数为 0 时, Math.ceil() 函数将返回 0。 下面是一些使用 Math.ceil() 函数的示例:

Math.ceil(1.23); // 返回 2
Math.ceil(2.99); // 返回 3
Math.ceil(-1.23); // 返回 -1
Math.ceil(-2.99); // 返回 -2

Math.abs

Math.abs() 是 JavaScript 中的一个函数,用于返回一个数的绝对值,即该数到 0 的距离,简单的理解就是正数不变,负数取它的相反值。例如,Math.abs(1) 返回 1,而 Math.abs(-1) 也返回 1。如果参数是 NaN(非数字),则返回 NaN, 当参数为正无穷大时,将返回正无穷大,当参数为负无穷大时,也将返回正无穷大。 下面是一些使用 Math.abs() 函数的示例:

Math.abs(1); // 返回 1
Math.abs(-1); // 返回 1
Math.abs(0); // 返回 0
Math.abs(-0); // 返回 0
Math.abs(-Infinity); // 返回 Infinity
Math.abs(NaN); // 返回 NaN

Math.random

Math.random()用于生成一个[0, 1)之间的随机数。也就是说,它会生成一个大于等于 0 且小于 1 的随机浮点数。 需要注意的是,Math.random() 函数生成的是伪随机数(pseudo-random number),其随机性并不是真正的随机性,而是基于某种算法计算得出的看似随机的数字序列。 如果需要生成在[min, max]内随机整数,可以使用以下公式: Math.floor(Math.random() _ (max - min + 1) + min); 其中,min 是指定范围的最小值,max 是指定范围的最大值。这个公式会生成一个大于等于 min 且小于等于 max 的随机整数。 因为 Math.random() _ (max – min) 生成的是 [0, max-min)的数,那么 Math.random() _ (max – min +1) 生成的是 [0, max-min+1)的数,继续 Math.random() _ (max - min + 1) + min 生成的是 [min, max+1)的数,注意一直都是左闭右开,最后再使用 Math.floor 取向左的整数,那么取值的范围就是[min, max]内的整数。 下面是一些使用 Math.random() 函数的示例:

Math.random(); // 生成一个[0, 1)之间的随机数
Math.floor(Math.random() * 10); // 生成一个大于等于0且小于10的随机整数
Math.floor(Math.random() * (10 - 5 + 1) + 5); // 生成一个大于等于5且小于等于10的随机整数

Math 上不常用的方法

Math.sqrt(x):返回 x 的平方根。 Math.pow(x, y):返回 x 的 y 次幂。 Math.sin(x):返回 x 的正弦值。 Math.cos(x):返回 x 的余弦值。 Math.tan(x):返回 x 的正切值。 Math.asin(x):返回 x 的反正弦值。 Math.acos(x):返回 x 的反余弦值。 Math.atan(x):返回 x 的反正切值。 Math.atan2(y, x):返回 y/x 的反正切值,与 x 的符号相同。 Math.exp(x):返回 e 的 x 次幂。 Math.log(x):返回 x 的自然对数(以 e 为底)。 Math.log10(x):返回 x 的以 10 为底的对数。 Math.log2(x):返回 x 的以 2 为底的对数,ES6 中引入。 因为这么方法不常用,就不详细的讲解这些函数,以上这些函数还不是全部,可以自己尝试在浏览器的调试窗口通过 console.log(Math) 查看 Math 对象上全部的方法。