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);
}