晴明的博客园 GitHub      CodePen      CodeWars     

[js] Math 相关方法

(number%1==0)可用于判断是不是整数,小数%1是小数

isNaN()检测 是否是 NaN,因为 NaN!=NaN

+=

-=

*=

/=

            var a = 10;
            a += 2;//10+2
            console.log(a); //12
            var a = 10;
            a -= 2;//10-2
            console.log(a); //8
            var a = 10;
            a *= 2;//10*2
            console.log(a); //20
            var a = 10;
            a /= 2; 
            console.log(a); //10/2=5

 

 

Number()

奇巧淫技:+数字  相当于Number(数字 )

parseInt()

parseFloat()

 1 var a = 'a';
 2 console.log(parseInt(a)); //NaN
 3 console.log(!parseInt(a)); //true
 4 console.log(parseFloat(a)); //NaN
 5 console.log(!parseFloat(a)); //true
 6 console.log(Number(a)); //NaN
 7 console.log(!Number(a)); //true
 8 console.log(a); //'a'
 9 var a = '4a';
10 console.log(parseInt(a)); //4
11 console.log(!parseInt(a)); //false
12 console.log(parseFloat(a)); //4
13 console.log(!parseFloat(a)); //false
14 console.log(Number(a)); //NaN
15 console.log(!Number(a)); //true
16 console.log(a); //'4a'        
17 var a = 'a4';
18 console.log(parseInt(a)); //NaN
19 console.log(!parseInt(a)); //true
20 console.log(parseFloat(a)); //NaN
21 console.log(!parseFloat(a)); //true
22 console.log(Number(a)); //NaN
23 console.log(!Number(a)); //true
24 console.log(a); //'a4'            
25 var a = '飞5';
26 console.log(parseInt(a)); //NaN
27 console.log(!parseInt(a)); //true
28 console.log(parseFloat(a)); //NaN
29 console.log(!parseFloat(a)); //true
30 console.log(Number(a)); //NaN
31 console.log(!Number(a)); //true
32 console.log(a); //'飞5'        
33 var a = '5飞';
34 console.log(parseInt(a)); //5
35 console.log(!parseInt(a)); //false
36 console.log(parseFloat(a)); //5
37 console.log(!parseFloat(a)); //false
38 console.log(Number(a)); //NaN
39 console.log(!Number(a)); //true
40 console.log(a); //'5飞'    
41 var a = '4.3a';
42 console.log(parseInt(a)); //4
43 console.log(!parseInt(a)); //false
44 console.log(parseFloat(a)); //4.3
45 console.log(parseFloat(a).toFixed(3)); //4.300
46 console.log(!parseFloat(a)); //false
47 console.log(Number(a)); //NaN
48 console.log(!Number(a)); //true
49 console.log(a); //'4.3a'        
50 var a = 'a4.3';
51 console.log(parseInt(a)); //NaN
52 console.log(!parseInt(a)); //true
53 console.log(parseFloat(a)); //NaN
54 console.log(!parseFloat(a)); //true
55 console.log(Number(a)); //NaN
56 console.log(!Number(a)); //true
57 console.log(a); //'a4.3'            
58 var a = '3.4';
59 console.log(parseInt(a)); //3
60 console.log(!parseInt(a)); //false
61 console.log(parseFloat(a)); //3.4
62 console.log(!parseFloat(a)); //false
63 console.log(Number(a)); //3.4
64 console.log(!Number(a)); //false
65 console.log(a); //'3.4'        
66 var a = '34';
67 console.log(parseInt(a)); //34
68 console.log(!parseInt(a)); //false
69 console.log(parseFloat(a)); //34
70 console.log(!parseFloat(a)); //false
71 console.log(Number(a)); //34
72 console.log(!Number(a)); //false
73 console.log(a); //'34'

 #parseInt()可用于进制转换,将各种进制的数,转换为10进制

//都返回15
parseInt("F", 16);
parseInt("17", 8);
parseInt("15", 10);
parseInt(15.99, 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15*3", 10);
parseInt("12", 13);

 

Math.abs(x)

//函数返回指定数字 “x“ 的绝对值。

Math.abs('-1');     // 1
Math.abs(-2);       // 2
Math.abs(null);     // 0
Math.abs("string"); // NaN
Math.abs();         // NaN

Math.ceil(x)

//返回一个大于或等于数 "x" 的最小整数(向上取整)。

Math.ceil(.95); // 1
Math.ceil(4); // 4
Math.ceil(7.004) // 8

Math.floor(x)

~~number   可同样实现 Math.floor()的效果

//函数返回小于或等于数 "x" 的最大整数(向下取整)。

Math.floor( 45.95); //  45
Math.floor(-45.95); // -46

Math.min()

Math.min([value1[,value2, ...]])

//返回零个或更多个数值的最小值。

            var x = 10,
                y = -20;
            var z = Math.min(x, y);
            console.log(z); //-20
            //限定边界
            var f = function(foo) {
                return foo;
            }
            var boundary = 20;
            var x = Math.min(f(25), boundary);
            console.log(x); //20
            //快速获取数组最小值
            function getMinOfArray(numArray) {
                return Math.min.apply(null, numArray);
            }
            console.log(getMinOfArray([-1, 2, 3, 5, 10]));//-1

 

Math.max()

Math.max([value1[,value2, ...]])

//函数返回 0 或 更多数的最大值。

            Math.max(10, 20); //  20
            Math.max(-10, -20); // -10
            Math.max(-10, 20); //  20
            //快速获取数组最大值
            function getMaxOfArray(numArray) {
                return Math.max.apply(null, numArray);
            }
            console.log(getMaxOfArray([-1, 2, 3, 5, 10])); //10

Math.random()

//函数返回 [0-1) 的浮点值伪随机数(大于等于0,小于1)。

            // 返回一个大于等于0,小于1的伪随机数
            function getRandom() {
                return Math.random();
            }
            //   0 <=  x  <1
            // 返回一个介于min和max之间的随机数
            function getRandomArbitrary(min, max) {
                return Math.random() * (max - min) + min;
            }
            //   min <  x  <max  
            // 返回一个介于min和max之间的整型随机数
            // Using Math.round() will give you a non-uniform distribution!
            function getRandomInt1(min, max) {
                return Math.floor(Math.random() * (max - min + 1) + min);
            }
            //   min <=  x  <= max 

 //返回随机颜色

function randomColor() {
    return `#${(~~(Math.random() * (1 << 24))).toString(16)}`
}

 

 

Math.round()

//返回一个数值四舍五入后最接近的整数

            // Returns the value 20
            x = Math.round(20.49);
            // Returns the value 21
            x = Math.round(20.5);
            // Returns the value -20
            x = Math.round(-20.5);
            // Returns the value -21
            x = Math.round(-20.51);
            // Returns the value 1 (!)
            // Note the rounding error because of inaccurate floating point arithmetics
            //最好不要在round方法内写运算?
            x = Math.round(1.005 * 100) / 100;
            console.log(Math.round(100.5)); //101
            console.log(Math.round(1.005 * 100)); //100

 

Math.sqrt()

//函数返回一个数的平方根

            Math.sqrt(9); // 3
            Math.sqrt(2); // 1.414213562373095
            Math.sqrt(1); // 1
            Math.sqrt(0); // 0
            Math.sqrt(-1); // NaN

 

Math.SQRT2

表示 2 的平方根,约为 1.414

 

Math.pow()

Math.pow(base, exponent)

Math.pow() 函数返回基数(base)的指数(exponent)次幂,即 base exponent。

function raisePower(x,y) {
   return Math.pow(x,y)
}

 Math.log()

Math.log(x)

Math.log() 函数返回一个数的自然对数,即:

∀x>0,Math.log(x)=ln(x)=the unique y such that ey=x

也就是 e的y次方 = x

自然常数e(约为2.71828)

Math.log(-1); // NaN, out of range
Math.log(0); // -Infinity
Math.log(1); // 0
Math.log(10); // 2.302585092994046

#getBaseLog(10, 1000),返回2.9999999999999996

也就是求 10的多少次方为1000

function getBaseLog(x, y) {
    return Math.log(y) / Math.log(x);
}

#求数字的底数和指数

var isPP = function(n) {
    for (var m = 2; m <= Math.floor(Math.sqrt(n)); ++m) {
        var k = Math.round(Math.log(n) / Math.log(m))
        if (Math.pow(m, k) == n) return [m, k];
    }
    return null;
}

 

#Math.exp()

返回 ex,x 表示参数,e 是欧拉常数(Euler's constant),自然对数的底数。

Math.exp(x)
```
Math.exp(-1); // 0.36787944117144233
Math.exp(0);  // 1
Math.exp(1);  // 2.718281828459045
```

 

#Math.sin

返回一个数值的正弦值。

Math.sin(x)

```
Math.sin(0);           // 0
Math.sin(1);           // 0.8414709848078965

Math.sin(Math.PI / 2); // 1
```

 

 

Number.prototype.toFixed()

numObj.toFixed(digits)

//使用定点表示法来格式化一个数。

//返回的值为指定的小数位数,会进行四舍五入

返回的结果是字符串。

            var numObj = 12345.6789;
            numObj.toFixed(); // 返回 "12346":进行四舍五入,不包括小数部分
            numObj.toFixed(1); // 返回 "12345.7":进行四舍五入
            numObj.toFixed(6); // 返回 "12345.678900":用0填充
            (1.23e+20).toFixed(2); // 返回 "123000000000000000000.00"
            (1.23e-10).toFixed(2); // 返回 "0.00"
            2.34.toFixed(1); // 返回 "2.3"
            - 2.34.toFixed(1); // 返回 -2.3 (由于操作符优先级,负数不会返回字符串)
            (-2.34).toFixed(1); // 返回 "-2.3" (若用括号提高优先级,则返回字符串)

 

Number.prototype.toPrecision()
numObj.toPrecision(precision)
指定的精度返回该数值对象的字符串表示。

var numObj = 5.123456;
console.log("numObj.toPrecision()  is " + numObj.toPrecision());  //输出 5.123456
console.log("numObj.toPrecision(5) is " + numObj.toPrecision(5)); //输出 5.1235
console.log("numObj.toPrecision(2) is " + numObj.toPrecision(2)); //输出 5.1
console.log("numObj.toPrecision(1) is " + numObj.toPrecision(1)); //输出 5

// 在某些情况下会以指数表示法返回
console.log((1234.5).toPrecision(2)); // "1.2e+3"

 

isFinite()

isFinite(Infinity);  // false
isFinite(NaN);       // false
isFinite(-Infinity); // false

isFinite(0);         // true
isFinite(2e64);      // true
isFinite(null);      // true

isFinite("0");       // true, would've been false with the 
                     // more robust Number.isFinite("0")
                     
isFinite(0/0) ; // false
isFinite("foo"); // false
isFinite("10"); // true
isFinite(10);   // true
isFinite(undefined);  // false
isFinite();   // false
isFinite(null);  // true,这点当特别注意

 

#输出指定位数的随机数

    function randomNumber(n) {
        var rnd = "";
        for (var i = 0; i < n; i++)
            rnd += Math.floor(Math.random() * 10);
        return rnd;
    }
    console.log(randomNumber(4)); 

 

posted @ 2016-02-22 00:46  晴明桑  阅读(261)  评论(0编辑  收藏  举报