Math 对象
- 对象属性
- 随机数 random()
- 最值 min() 和 max()
- 舍入 ceil()、floor()、round()、fround()
- 其它方法
扩展:
Math 对象上提供的计算要比直接在JavaScript实现的快的多,因为Math 对象上的计算使用了 JavaScript引擎中更高效的实现和处理器指令。但使用 Math 计算的问题是精度因浏览器、操作系统、指令集和硬件而异。
Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象。
Math 用于Number
类型。它不支持BigInt
:表示任意长度的整数。
对象属性
Math 对象有一些属性,主要用于保存数学中的一些特殊值。
属性 | 说明 |
---|---|
Math.E | 自然对数的基数 e 的值 |
Math.LN2 | 2 为底的自然对数 |
Math.LN10 | 10 为底的自然对数 |
Math.LOG2E | 以 2 为底 e 的对数 |
Math.LOG10E | 以 2 为底 e 的对数 |
Math.PI | π的值,只能返回小数点后15位 |
Math.SQRT1_2 | 1/2 的评分根 |
Math.SQRT2 | 2 的评分根 |
随机数 random()
random()
:返回一个0-1范围内的随机数,其中包含 0 ,但是不包含 1 。
实例:从1-10范围内随机选择一个整数
js">//方法一
let num1 = parseInt(Math.random()*10+1); //[0-10)+1
console.log(num1);
//方法二
let num2 = Math.floor(Math.random()*10+1); //[0-10)+1
console.log(num2);
//方法三(不推荐,取到1的概率极小)
let num3 = Math.ceil(Math.random()*9+1); //[0-9)+1
console.log(num3);
实例:从2-10范围内随机选择一个整数
js">//方法一
let num1 = parseInt(Math.random()*9+2); //[2-11)
console.log(num1);
//方法二
let num2 = Math.floor(Math.random()*9+2); //[2-11)
console.log(num2);
实例:创建一个随机数函数
js">function selectFrom(lowerValiue,upperValue){
let choices = upperValue - lowerValiue + 1;
return Math.floor(Math.random()*choices + lowerValiue);
}
let num = selectFrom(2,10);
console.log(num); //2-10范围内的值,其中包括2和10。
最值 min() 和 max()
min()
:可以接收任意多个参数,返回所有数字中最小的max()
:可以接收任意多个参数,返回所有数字中最大的
js">let max = Math.max(3,54,32,16);
console.log(max); //54
let min = Math.min(3,54,32,16);
console.log(min) //3
解析:
- 在
3,54,32,16
中,Math.max()
返回的是54
,Math.min()
返回的是3. - 这两个方法可以避免使用额外的循环和 if 语句来确定一组数值中的最大最小值
js">let values = [1,2,3,4,5,6,7,8,9];
//直接使用数组调用Math.max()或Math.min()会出错,返回值为NaN
let max = Math.max(values);
console.log(max); //NaN
let min = Math.min(values);
console.log(min); //NaN
//要使数组能用Math.max()和Math.min(),可以先使用“...”扩展操作符
max = Math.max(...values);
console.log(max); //9
min = Math.min(...values);
console.log(min); //1
解析:
- 直接使用数组调用Math.max()或Math.min()会出错,返回值为NaN
- 要使数组能用Math.max()和Math.min(),可以先使用“…”扩展操作符
舍入 ceil()、floor()、round()、fround()
Math.ceil()
:向上取整Math.floor()
:向下取整Math.round()
:返回指定小数的四舍五入后最近的整数Math.fround()
:返回数值最接近的单精度(32位)浮点值
js">// 向上取整
console.log(4.4,Math.ceil(4.4)); //5
console.log(-4.4,Math.ceil(-4.4)); //-4
console.log(-4.5,Math.ceil(-4.5)); //-4
// 向下取整
console.log(4.4,Math.floor(4.4)); //4
console.log(-4.4,Math.floor(-4.4)); //-5
console.log(-4.5,Math.floor(-4.5)); //-5
// 四舍五入为整数
console.log(4.4,Math.round(4.4)); //4
console.log(4.5,Math.round(4.5)); //5
console.log(4.6,Math.round(4.6)); //5
console.log(-4.4,Math.round(-4.4)); //-4
console.log(-4.5,Math.round(-4.5)); //-4
console.log(-4.6,Math.round(-4.6)); //-5
// 四舍五入为小数
console.log(4.4,Math.fround(4.4)); //4.400000095367432
console.log(4.5,Math.fround(4.5)); //4.5
console.log(4.6,Math.fround(4.6)); //4.599999904632568
其它方法
方法 | 说明 |
---|---|
Math.abs(x) | 返回 x 的绝对值 |
Math.exp(x) | 返回Math.E的x次幂 |
Math.expml(x) | 等于Math.exp(x) - 1 |
Math.log(x) | 返回x的自然对数 |
Math.log1p(x) | 等于1+Math.log(x) |
Math.pow(x,power) | 返回x的power幂 |
Math.pow(…nums) | 返回nums中每个数平方和的平方根 |
Math.clz32(32) | 返回32位整数x的前置0的数量 |
Math.sign(x) | 返回x符号的1、0、-0、-1 |
Math.trunc(x) | 返回x的整数部分,删除所有小数 |
Math.sprt(x) | 返回x 的平方根 |
Math.cbrt(x) | 返回x的立方根 |
Math.acos(x) | 返回x的反余弦 |
Math.acosh(x) | 返回x的反双曲余弦 |
Math.asin(x) | 返回x的反正弦 |
Math.asinh(x) | 返回x的反双曲正弦 |
Math.atan(x) | 返回x的反正切 |
Math.atanh2(y,x) | 返回y/x的反正切 |
Math.cos(x) | 返回x的余弦 |
Math.sin(x) | 返回x的正弦 |
Math.tan(x) | 返回x的正切 |