js内置对象之Math

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

 

posted @ 2017-02-28 13:59  Joyce-Chen  阅读(393)  评论(0)    收藏  举报