JavaScript原生对象之Number对象的属性和方法详解


Posted in Javascript onMarch 13, 2015

创建 Number 对象的语法:

var myNum = new Number(value);

var myNum = Number(value);

当 Number() 和运算符 new 一起作为构造函数使用时,它返回一个新创建的 Number 对象。如果不用 new 运算符,把 Number() 作为一个函数来调用,它将把自己的参数转换成一个原始的数值,并且返回这个值(如果转换失败,则返回 NaN)。

MAX_VALUE

MAX_VALUE 属性是 JavaScript 中可表示的最大的数。它的近似值为 1.7976931348623157 x 10308。最大的负数是 -MAX_VALUE。

比MAX_VALUE还要大的数是Infinity。MAX_VALUE是一个静态属性,所以调用方法应该是Number.MAX_VALUE。

console.log(Number.MAX_VALUE)  //1.7976931348623157e+308

MIN_VALUE

MIN_VALUE 属性是 JavaScript 中可表示的最小的数(接近 0 ,但不是负数)。它的近似值为 5 x 10-324

所有比MIN_VALUE小的数都会被转换成0。

MIN_VALUE是一个静态属性,所以调用方法应该是 Number.MIN_VALUE。

NaN

NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。

可以使用 isNaN() 全局函数来判断一个值是否是 NaN 值。

Number.NaN 是一个特殊值,说明某些算术运算(如求负数的平方根)的结果不是数字。方法 parseInt() 和 parseFloat() 在不能解析指定的字符串时就返回这个值。对于一些常规情况下返回有效数字的函数,也可以采用这种方法,用 Number.NaN 说明它的错误情况。

JavaScript 以 NaN 的形式输出 Number.NaN。请注意,NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内。因此,不能与 Number.NaN 比较来检测一个值是不是数字,而只能调用 isNaN() 来比较。

注意:全局变量NaN 和Number.NaN 是一样的,NaN是一个不可配置,不可修改的属性。

console.log(parseInt("abc"));    //NaN

console.log(NaN === NaN);        //false

console.log(Number.NaN === NaN); //false

console.log(isNaN(NaN));         //true

console.log(isNaN(Number.NaN));  //true

NEGATIVE_INFINITY

NEGATIVE_INFINITY 属性表示小于 -Number.MAX_VALUE 的值。该值代表负无穷大。

JavaScript 显示 NEGATIVE_INFINITY 时使用的是 -Infinity。这个值的算术行为和无穷大非常相似。例如,任何数乘无穷大结果仍为无穷大,任何数被无穷大除的结果为 0。

-Infinity 和 Number.NEGATIVE_INFINITY 相等。

var x = (-Number.MAX_VALUE) * 2;

var y = Number.NEGATIVE_INFINITY;

console.log(x);     //-Infinity

console.log(y);     //-Infinity

console.log(x===y); //true

POSITIVE_INFINITY

POSITIVE_INFINITY 属性表示大于 Number.MAX_VALUE 的值。该值代表正无穷大。

JavaScript 显示 POSITIVE_INFINITY 时使用的是 Infinity。这个值的算术行为和无穷大非常相似。例如,任何数乘无穷大结果仍为无穷大,任何数被无穷大除的结果为 0。

Infinity 和 Number.POSITIVE_INFINITY相等。

isFinite() 方法可以判断参数是否是有限的数字。

var x = Number.NEGATIVE_INFINITY;

var y = Number.POSITIVE_INFINITY;

var z = Infinity;

var a = "abc";

var b = 123;
console.log(isFinite(x));  //false

console.log(isFinite(y));  //false

console.log(isFinite(z));  //false

console.log(isFinite(a));  //false

console.log(isFinite(b));  //true

toString()

toString() 方法可把一个 Number 对象转换为一个字符串,并返回结果。

NumberObject.toString(radix)

参数radix是可选的。规定表示数字的基数,使 2 ~ 36 之间的整数。若省略该参数,则使用基数 10,建议总是带着此参数,防止误解。例如,当 radix 为 2 时,NumberObject 会被转换为二进制值表示的字符串。

当调用该方法的对象不是 Number 时抛出 TypeError 异常。

var a = 100;
console.log(a.toString());    //100

console.log(a.toString(10));  //100

console.log(a.toString(2));   //1100100

console.log(a.toString(8));   //144

console.log(a.toString(16));  //64

toLocaleString()

toLocaleString() 方法可把一个 Number 对象转换为本地格式的字符串。

数字的字符串表示,由实现决定,根据本地规范进行格式化,可能影响到小数点或千分位分隔符采用的标点符号。

当调用该方法的对象不是 Number 时抛出 TypeError 异常。

var a = 123456;
console.log(a.toLocaleString());  //123,456

console.log(a.toLocaleString("zh-Hans-CN-u-nu-hanidec"));  //一二三,四五六

更多参数可以参考:MDN

toFixed()

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

NumberObject.toFixed(num)

参数num是必需的。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。

返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。

当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。当调用该方法的对象不是 Number 时抛出 TypeError 异常。

var n = 12345.6789;
console.log(n.toFixed());            //12346

console.log(n.toFixed(2));           //12345.68

console.log(n.toFixed(6));           //12345.678900

console.log((1.23e+20).toFixed(2));  //123000000000000000000.00

console.log((1.23e-10).toFixed(2));  //0.00

注意:由于对浮点数的处理,toFixed() 方法展现出的结果并不是所谓的“四舍五入”或者是“四舍六入五成双”,而是四舍,六入,五的表现十分混乱。

//Chrome中

console.log(( 0.035 ).toFixed( 2 )); //0.04

console.log(( 0.045 ).toFixed( 2 )); //0.04

建议自己写方法来替换toFixed()默认行为,可以参考:SO上的讨论:

Number.prototype.toFixed = function(len){

    var temp = Math.pow(10,len);

    var s = Math.ceil(this * temp)

    return s/temp;

}
console.log(( 0.035 ).toFixed( 2 ));  //0.04

console.log(( 0.045 ).toFixed( 2 ));  //0.05

toExponential()

toExponential() 方法可把对象的值转换成指数计数法。

NumberObject.toExponential(num)

参数num是可选的。规定指数计数法中的小数位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将使用尽可能多的数字。

返回 NumberObject 的字符串表示,采用指数计数法,即小数点之前有一位数字,小数点之后有 num 位数字。该数字的小数部分将被舍入,必要时用 0 补足,以便它达到指定的长度。

当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。当调用该方法的对象不是 Number 时抛出 TypeError 异常。

var num = 10000.1234;
console.log(num.toExponential());    //1.00001234e+4

console.log(num.toExponential(2));   //1.00e+4

console.log(num.toExponential(10));  //1.0000123400e+4

toPrecision()

toPrecision() 方法可将数值格式化为一个十进制数形式的字符串。

NumberObject.toPrecision(num)

参数num是可选的。用于控制数字的精度。该参数是 1 ~ 21 之间(且包括 1 和 21)的值。如果省略了该参数,则调用方法 toString(),而不是把数字转换成十进制的值。

var num = 10000.1234;
console.log(num.toPrecision());    //10000.1234

console.log(num.toPrecision(2));   //1.0e+4

console.log(num.toPrecision(10));  //10000.12340
Javascript 相关文章推荐
浅析document.ready和window.onload的区别讲解
Dec 18 Javascript
jquery获取tagName再进行判断
May 29 Javascript
JS制作手机端自适应缩放显示
Jun 11 Javascript
网页中JS函数自动执行常用三种方法
Mar 30 Javascript
使用vue.js开发时一些注意事项
Apr 27 Javascript
js创建数组的简单方法
Jul 27 Javascript
js常用DOM方法详解
Feb 04 Javascript
jQuery+ajax实现修改密码验证功能实例详解
Jul 06 jQuery
Javascript模块化机制实现原理详解
Apr 02 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
Apr 21 Javascript
js实现炫酷光感效果
Sep 05 Javascript
Ajax实现异步加载数据
Nov 17 Javascript
JavaScript原生对象之Date对象的属性和方法详解
Mar 13 #Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
Mar 13 #Javascript
JavaScript内存管理介绍
Mar 13 #Javascript
JavaScript中的this关键字使用方法总结
Mar 13 #Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 #Javascript
在linux中使用包管理器安装node.js
Mar 13 #Javascript
JQuery中serialize() 序列化
Mar 13 #Javascript
You might like
PHP4实际应用经验篇(7)
2006/10/09 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
python万年历实现代码 含运行结果
2017/05/20 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
python3转换code128条形码的方法
2019/04/17 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
银行学习十八大感想
2014/01/11 职场文书
客服专员岗位职责
2014/02/28 职场文书
银行委托书范本
2014/04/04 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
学校运动会开幕词
2016/03/03 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
python for循环赋值问题
2021/06/03 Python
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js