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 相关文章推荐
js树形控件脚本代码
Jul 24 Javascript
JavaScript 原型链学习总结
Oct 29 Javascript
jquery实现表格本地排序的方法
Mar 11 Javascript
基于jQuery实现页面搜索功能
Mar 26 Javascript
js H5 canvas投篮小游戏
Aug 18 Javascript
ES6中字符串string常用的新增方法小结
Nov 07 Javascript
vue axios数据请求get、post方法及实例详解
Sep 11 Javascript
Nuxt.js SSR与权限验证的实现
Nov 21 Javascript
Vue加载json文件的方法简单示例
Jan 28 Javascript
js正则匹配多个全部数据问题
Dec 20 Javascript
vue绑定数字类型 value为数字的实例
Aug 31 Javascript
jquery实现图片放大镜效果
Dec 23 jQuery
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
PHP 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
php正则表达式使用的详细介绍
2013/04/27 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
php session_decode函数用法讲解
2019/05/26 PHP
js获取单选按钮的数据
2006/11/27 Javascript
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
Python lambda和Python def区别分析
2014/11/30 Python
Python中type的构造函数参数含义说明
2015/06/21 Python
基于python实现微信模板消息
2015/12/21 Python
详解python读取和输出到txt
2019/03/29 Python
python实现最速下降法
2020/03/24 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
小区门卫岗位职责
2013/12/31 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
教师年终个人总结
2015/02/11 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
医院员工辞职信范文
2015/05/12 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
python3实现无权最短路径的方法
2021/05/12 Python