目录
What——Math是什么?
1.Math一个工具类, Math中为我们提供了数学运算相关的一些常量和方法
2.Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象。
3.与其他全局对象不同的是,Math 不是一个构造器。Math 的所有属性与方法都是静态的。引用圆周率的写法是 Math.PI,调用正余弦函数的写法是 Math.sin(x),x 是要传入的参数。Math 的常量是使用 JavaScript 中的全精度浮点数来定义的。
Have——Math中的常量和静态方法
1.常量
常量 | 描述 |
---|---|
Math.PI | 圆周率,一个圆的周长和直径之比,约等于 3.14159。 |
Math.E | 欧拉常数,也是自然对数的底数,约等于 2.718。 |
Math.LN2 | 2 的自然对数,约等于 0.693。 |
Math.LN10 | 10 的自然对数,约等于 2.303。 |
更多见MDN文档:https://developer.mozilla.org/zh-CN/
2.方法
方法 | 描述 | 例子 |
---|---|---|
Math.abs(x) | 返回一个数的绝对值。 | result = Math.abs(-10)//10 |
Math.min([x[, y[, …]]]) | 返回零到多个数值中最小值。 | result = Math.min(10, 20, 30, 44, 55, -1)//-1 |
Math.max([x[, y[, …]]]) | 返回零到多个数值中最大值。 | result = Math.max(10, 20, 30, 44, 55, -1) //55 |
Math.pow(x, y) | 返回一个数的 y 次幂。相当于x**y | result = Math.pow(4, 2) // 4 ** 2 |
Math.sqrt(x) | 返回一个数的平方根。 | result = Math.sqrt(4) // 4 ** 0.5 |
Math.floor(x) | 返回小于一个数的最大整数,即一个数向下取整后的值。 | result = Math.floor(1.2) //1 result = Math.floor(-1.2) //-2 |
Math.ceil(x) | 返回大于一个数的最小整数,即一个数向上取整后的值。 | result = Math.ceil(1.2) //2 result = Math.ceil(-1.2) //-1 |
Math.round(x) | 返回四舍五入后的整数。 | result = Math.round(1.4) //1 result = Math.round(2.6) //3 |
Math.trunc(x) | 返回一个数的整数部分,直接去除其小数点及之后的部分。 | result = Math.trunc(1.2) //1 result = Math.trunc(-1.2) //-1 |
Math.random() | 返回一个 [0,1)之间的伪随机数。 |
生成各种范围随机数的方法
1.生成 [ 0,1 )之间的随机数
得到一个大于等于 0 小于 1 之间的随机数
function getRandom() {
return Math.random();
}
2.生成 [ 0 ,x ) 之间的随机数
生成 0-x之间的随机数: Math.round(Math.random() * x) Math.floor(Math.random() * (x + 1))
function getRandom(x) {
return Math.round(Math.random() * x)
}
function getRandom(x) {
Math.floor(Math.random() * (x + 1))
}
3.生成 [ x , y ) 之间的随机数
生成 x-y 之间的随机数 Math.Math.random() * (y-x) + x
可根据需要结合Math.round()、Math.floor()等使用
function getRandomArbitrary(x, y) {
return Math.random*(y-x)+x;
}
4.生成 [ x , y ) 之间的随机整数
这个示例返回一个在指定值之间的随机整数。这个值不小于 min(如果 min 不是整数,则不小于 min 的向上取整数),且小于(但不等于)max。
function getRandomInt(min, max) {
const minCeiled = Math.ceil(min);
const maxFloored = Math.floor(max);
return Math.floor(Math.random() * (maxFloored - minCeiled) + minCeiled); // 不包含最大值,包含最小值
}
备注: 也许很容易想到用 Math.round() 来实现,但是这会导致你的随机数处于一个不均匀的分布,这可能不符合你的需求。
5.生成 [ x , y ] 之间的随机整数
得到一个两数之间的随机整数,包括两个数在内 虽然上面的 getRandomInt() 函数包含最小值,但不含最大值。如果你需要结果同时包含最小值和最大值怎么办?下面的 getRandomIntInclusive() 函数可以实现这一点。
即 Math.floor(Math.random( ) * ( y - x + 1 ) + x )
function getRandomIntInclusive(min, max) {
const minCeiled = Math.ceil(min);
const maxFloored = Math.floor(max);
return Math.floor(Math.random() * (maxFloored - minCeiled + 1) + minCeiled); // 包含最小值和最大值
}