JavaScript Number数字类型

来源:互联网 发布:mac怎么安装打印机驱动 编辑:程序博客网 时间:2024/05/18 01:45

1. Number对象属性

属性 描述 MAX_VALUE 可表示的最大的数。 MIN_VALUE 可表示的最小的数。 POSITIVE_INFINITY 正无穷大,溢出时返回该值。 NEGATIVE_INFINITY 负无穷大,溢出时返回该值。 NaN 非数字值。

代码示例:

    var a = Number.MAX_VALUE;    console.log(a);    //1.7976931348623157e+308    var b = Number.MIN_VALUE;    console.log(b);    //5e-324    var c = new Number(a+a);    console.log(c);    //Number {[[PrimitiveValue]]: Infinity}    var d = new Number(-a-a);    console.log(d);    //Number {[[PrimitiveValue]]: -Infinity}    console.log(Number('a'));    //NaN    console.log(isNaN('a'));    //true

2. Number对象方法

方法 描述 toString 把数字转换为字符串,使用指定的基数。 toLocaleString 把数字转换为字符串,使用本地数字格式顺序。 toFixed 把数字转换为字符串,结果的小数点后有指定位数的数字。 toExponential 把对象的值转换为指数计数法。 toPrecision 把数字格式化为指定的长度。 valueOf 返回一个 Number 对象的基本数字值。

代码示例:

    var a = 10000;      console.log(a.toString());    //10000    console.log(a.toLocaleString());    //Chrome:10,000   IE:10,000.00    var b = 123.4567;    console.log(b.toFixed(2));    //123.46    console.log(b.toPrecision(2));    //1.2e+2    console.log(b.toExponential());    //1.2345e+2    console.log(b.toExponential(2));    //1.23e+2    console.log(b.valueOf());    //123.4567

2.1 toString与toLocalString的区别

toString()是javascript中所有对象都自带的一个方法,将对象本身转化为字符串输出。
toLocaleString()也是将对象作为字符串输出,区别在于中间加入了“本地化”的过程。

 这种区别在检测时间对象时特别明显,如下所示:
         var date = new Date();         console.log(date.toString());         //Chrome:Tue Nov 24 2015 20:09:50 GMT+0800 (中国标准时间)         //IE:Tue Nov 24 20:09:50 UTC+0800 2015         console.log(date.toLocaleString());         //Chrome:2015/11/24 下午8:09:50         //IE:2015年11月24日 20:09:50
 从上面的代码也可看出Chrome和IE“本地化”的实现也是不一样的

2.2 toString与valueOf的区别

toString的解释参见上一个例子
valueOf表示的是对象本身的值

这么解释起来并不明确,很难区分二者描述上的区别,加上Number又是一个基本对象,从例子上也看不出变化。让我们稍稍超前一点借用一下数组对象。

        var arr = [123,"sean"];        console.log(arr.toString());        //123,sean        console.log(arr.valueOf());        //[12, "sea"]

toString()方法仅仅将arr的内容转成字符串打印出来,但是丢失了数据原本的类型。但是通过valueOf()我们可以清晰地看出arr是Array类型,12是Number类型,“sean”是String类型。
2.3 toPrecision、toFixed与toExponential的区别

toFixed控制的则是一个数字小数点后保留的位数
toPrecision控制的是数字的精度
toExponential是将一个数用科学计数法的形式表示

从解释上就可以看出其实这三者完全没有关系,只是在某些特殊情况下三者的结果在表现形式上看着相似而已。

        var a = 123.456;        console.log(a.toFixed(2));        //保留小数点后两位     123.46        console.log(a.toPrecision(2));        //保留两位有效数字     1.2e+2        console.log(a.toExponential());        //科学计数法表示       1.23456e+2

3. 注意事项

3.1 1/0和0/0的结果不同

        console.log(1/0);        //Infinity        console.log(0/0);        //NaN

3.2 NaN本身是数字类型,但它不等于任何数字(包括它本身)

        console.log(typeof NaN)        //number        console.log(NaN==NaN)        //false
1 0
原创粉丝点击