js内置对象之Math
Math对象,专门提供数学计算的API,Math对象没有构造函数,使用时无须创建,可以把Math作为对象直接使用。
方法 | 描述 |
abs(x) | 返回数的绝对值。 |
acos(x) | 返回数的反余弦值。 |
asin(x) | 返回数的反正弦值。 |
atan(x) | 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。 |
atan2(y,x) | 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。 |
ceil(x) | 对数进行上舍入。 |
cos(x) | 返回数的余弦。 |
exp(x) | 返回 e 的指数。 |
floor(x) | 对数进行下舍入。 |
log(x) | 返回数的自然对数(底为e)。 |
max(x,y) | 返回 x 和 y 中的最高值。 |
min(x,y) | 返回 x 和 y 中的最低值。 |
pow(x,y) | 返回 x 的 y 次幂。 |
random() | 返回 0 ~ 1 之间的随机数。 |
round(x) | 把数四舍五入为最接近的整数。 |
sin(x) | 返回数的正弦。 |
sqrt(x) | 返回数的平方根。 |
tan(x) | 返回角的正切。 |
toSource() | 返回该对象的源代码。 |
valueOf() | 返回 Math 对象的原始值。 |
1、API——取整
Math.ceil(num):上取整,只要超过,就取整数部分+1
Math.floor(num):下取整,舍弃小数部分
Math.round(num):四舍五入取整
比较 num.toFixed(d) & Math.round(num):①toFixed方法返回的是一个字符串;②round方法只能取整
2、乘方和开方:
Math.pow(底数,幂):乘方,计算底数的幂次方
Math.sqrt(num):开放,计算num的平方
3、最大值和最小值
Math.max(num1,num2,num3,……):计算最大值
Math.min(num1,num2,num3,……):计算最小值
但是这两个函数的参数只能是Number类型,其他类型会进行隐式转换,不支持数组,改进如下:
Math.max.apply(Math,arr):放回数组中最大的元素,apply方法可以将arr打散成单个值,然后传给max方法。
4、随机数
Math.random():生成0~1的随机数
生成大于等于min小于等于max的随机数,代码如下:
var n = parseInt(Math.random()*(max-min+1)+min);
练习:
1、综合round方法和toFixed方法,定义一个函数使其能够按任意小数位数四舍五入,并且返回的类型是Number
function round(num,d){
/*
//将num乘以10的d次方
num *= Math.pow(10,d);
//将num四舍五入取整
num = Math.round(num);
//将num除以10的d次方
num /= Math.pow(10,d)
return num;
*/
//简写
return Math.round(num*Math.pow(10,d))/Math.pow(10,d);
}
2、模拟生成双色球
function doubleBall(){
//声明数组reds,保存红球
var reds = [];
while(reds.length<6){
//生成1~33之间的随机数red
var red = parseInt(Math.random()*33+1);
for(var i=0;i<reds.length;i++){
//如果数组中已经存在red,则退出本次for循环
if(red == reds[i]){break;}
}
//如果for循环结束后,i=reds.length,说明red不再reds数组中,将red压入数组中
if(i == reds.length){reds.push(red)}
}
//生成1~16之间的随机数blue
var blue = parseInt(Math.random()*16+1);
return (reds.sort(function(a,b){return a-b;}).join()+" | "+blue);
}