博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript -- 精通Number
阅读量:6806 次
发布时间:2019-06-26

本文共 6323 字,大约阅读时间需要 21 分钟。

Number 对象是经过封装的能让你处理数字值的对象。Number 对象由 Number() 构造器创建。

new Number(value);

  • 如果参数无法被转换为数字,则返回 NaN。
  • 在非构造器上下文中 (如:没有 new 操作符),Number 能被用来执行类型转换。

另外,Number类的属性比Array、String多些,Number的很多方法和属性,全局对象都有。

属性

这些属性都writable = false, enumerable = false, configurable = false

Number.EPSILON : 属性表示 1 和大于 1 的最小的浮点数(可表示为 Number)的差值。你不必创建一个 Number 对象来访问这个静态属性(直接使用 Number.EPSILON)。
EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16,或者 2-52。

Number.MAX_SAFE_INTEGER : 常量表示在 JavaScript 中最大的安全整数(maxinum safe integer)(253 - 1)。

MAX_SAFE_INTEGER 是一个值为 9007199254740991的常量。因为Javascript的数字存储使用了IEEE 754中规定的双精度浮点数数据类型,而这一数据类型能够安全存储 -(253 - 1) 到 253 - 1 之间的数值(包含边界值)。

Number.MAX_SAFE_INTEGER // 9007199254740991Math.pow(2, 53) - 1     // 9007199254740991复制代码

Number.MAX_VALUE : 属性表示在 JavaScript 里所能表示的最大数值。

MAX_VALUE 属性值接近于 1.79E+308。大于 MAX_VALUE 的值代表 "Infinity"。

因为 MAX_VALUE 是 Number 对象的一个静态属性,所以你应该直接使用Number.MAX_VALUE ,而不是作为一个创建的 Number 实例的属性。

Number.MIN_SAFE_INTEGER : 代表在 JavaScript中最小的安全的integer型数字 (-(253 - 1))。

MIN_SAFE_INTEGER 的值是-9007199254740991. 在这个规定中能安全的表示数字的范围在-(253 - 1) 到 253 - 1之间.

Number.MIN_SAFE_INTEGER // -9007199254740991-(Math.pow(2, 53) - 1)  // -9007199254740991复制代码

Number.MIN_VALUE : 属性表示在 JavaScript 中所能表示的最小的正值。

MIN_VALUE 属性是 JavaScript 里最接近 0 的正值,而不是最小的负值。

MIN_VALUE 的值约为 5e-324。小于 MIN_VALUE ("underflow values") 的值将会转换为 0。

Number.NEGATIVE_INFINITY : 属性表示负无穷大。

Number.NEGATIVE_INFINITY 的值和全局对象的 Infinity 属性的负值相同。

  • 任何正值,包括 POSITIVE_INFINITY,乘以 NEGATIVE_INFINITY 为 NEGATIVE_INFINITY。
  • 任何负值,包括 NEGATIVE_INFINITY,乘以 NEGATIVE_INFINITY 为 POSITIVE_INFINITY。
  • 0 乘以 NEGATIVE_INFINITY 为 NaN。
  • NaN 乘以 NEGATIVE_INFINITY 为 NaN。
  • NEGATIVE_INFINITY 除以任何负值(除了 NEGATIVE_INFINITY)为 POSITIVE_INFINITY。
  • NEGATIVE_INFINITY 除以任何正值(除了 POSITIVE_INFINITY)为 NEGATIVE_INFINITY。
  • NEGATIVE_INFINITY 除以 NEGATIVE_INFINITY 或 POSITIVE_INFINITY 是 NaN。
  • 任何数除以 NEGATIVE_INFINITY 为 0。

为了成功返回一个有限值,你可能会使用 Number.NEGATIVE_INFINITY 属性来判断是否显示一个条件错误 。然而 isFinite 方法更适合这种情况。

Number.NaN : 表示“非数字”(Not-A-Number)。和 NaN 相同。不必创建一个 Number 实例来访问该属性,使用 Number.NaN 来访问该静态属性。

Number.POSITIVE_INFINITY : 属性表示正无穷大。Number.POSITIVE_INFINITY 的值同全局对象 Infinity 属性的值相同。

  • 任何正值,包括 POSITIVE_INFINITY,乘以 POSITIVE_INFINITY 为 POSITIVE_INFINITY。
  • 任何负值,包括 NEGATIVE_INFINITY,乘以 POSITIVE_INFINITY 为 NEGATIVE_INFINITY。
  • 0 乘以 POSITIVE_INFINITY 为 NaN。
  • NaN 乘以 POSITIVE_INFINITY 为 NaN。
  • POSITIVE_INFINITY 除以 NEGATIVE_INFINITY 以外的任何负值为 NEGATIVE_INFINITY。
  • POSITIVE_INFINITY 除以 POSITIVE_INFINITY 以外的任何正值为 POSITIVE_INFINITY。
  • POSITIVE_INFINITY 除以 NEGATIVE_INFINITY 或 POSITIVE_INFINITY 为 NaN。
  • 任何数除以 POSITIVE_INFINITY 为 0。

数字判断

Number.isFinite : 方法用来检测传入的参数是否是一个有穷数(finite number)。

Number.isFinite(value)
返回一个布尔值,表示给定的值是否是一个有穷数。
和全局的 isFinite() 函数相比,这个方法不会强制将一个非数值的参数转换成数值,这就意味着,只有数值类型的值,且是有穷的(finite),才返回 true。

Number.isFinite(Infinity);  // falseNumber.isFinite(NaN);       // falseNumber.isFinite(-Infinity); // falseNumber.isFinite(0);         // trueNumber.isFinite(2e64);      // trueNumber.isFinite('0');       // false, 全局函数 isFinite('0') 会返回 true复制代码

Number.isInteger : 方法用来判断给定的参数是否为整数。如果被检测的值是整数,则返回 true,否则返回 false。注意 NaN 和正负 Infinity 不是整数。

Number.isNaN : 方法确定传递的值是否为 NaN和其类型是 Number。它是原始的全局isNaN()的更强大的版本。一个布尔值,表示给定的值是否是 NaN。

Number.isNaN(value)

在 JavaScript 中,NaN 最特殊的地方就是,我们不能使用相等运算符(== 和 ===)来判断一个值是否是 NaN,因为 NaN == NaN 和 NaN === NaN 都会返回 false。因此,必须要有一个判断值是否是 NaN 的方法。

和全局函数 isNaN() 相比,该方法不会强制将参数转换成数字,只有在参数是真正的数字类型,且值为 NaN 的时候才会返回 true。

Number.isNaN(NaN);        // trueNumber.isNaN(Number.NaN); // trueNumber.isNaN(0 / 0)       // true// 下面这几个如果使用全局的 isNaN() 时,会返回 true。Number.isNaN("NaN");      // false,字符串 "NaN" 不会被隐式转换成数字 NaN。Number.isNaN(undefined);  // falseNumber.isNaN({});         // falseNumber.isNaN("blabla");   // false// 下面的都返回 falseNumber.isNaN(true);Number.isNaN(null);Number.isNaN(37);Number.isNaN("37");Number.isNaN("37.37");Number.isNaN("");Number.isNaN(" ");复制代码

Number.isSafeInteger : 方法用来判断传入的参数值是否是一个“安全整数”(safe integer)。

Number.isSafeInteger(3);                    // trueNumber.isSafeInteger(Math.pow(2, 53))       // falseNumber.isSafeInteger(Math.pow(2, 53) - 1)   // trueNumber.isSafeInteger(NaN);                  // falseNumber.isSafeInteger(Infinity);             // falseNumber.isSafeInteger("3");                  // falseNumber.isSafeInteger(3.1);                  // falseNumber.isSafeInteger(3.0);                  // true复制代码

数字转化

Number.parseFloat : 方法可以把一个字符串解析成浮点数。该方法与全局的 parseFloat() 函数相同,并且处于 ECMAScript 6 规范中(用于全局变量的模块化)。给定值被解析成浮点数,如果无法被解析成浮点数,则返回NaN。

Number.parseFloat(string)

Number.parseInt : 方法可以根据给定的进制数把一个字符串解析成整数。

Number.parseInt(string[, radix])

// radix为指定基数,说明字符串为多少进制的数字表示。let strObj = '0110';console.log(Number.parseInt(strObj, 2)); // 6console.log(Number.parseInt(strObj, 10)); // 110复制代码

toExponenttoFixedial : 方法以指数表示法返回该数值字符串表示形式。

numObj.toExponential(fractionDigits)

一个用幂的形式 (科学记数法) 来表示Number 对象的字符串。小数点后以fractionDigits 提供的值来四舍五入。如果 fractionDigits 参数被忽略了,小数点后的将尽可能用最多的位数来表示该数值。

toFixed : 方法使用定点表示法来格式化一个数。

numObj.toFixed(digits)
小数点后数字的个数;介于 0 到 20 (包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0。

返回所给数值的定点数表示法的字符串形式。

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" (若用括号提高优先级,则返回字符串)复制代码

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

以定点表示法或指数表示法表示的一个数值对象的字符串表示,四舍五入到 precision 参数指定的显示数字位数。

var numObj = 5.123456;console.log("numObj.toPrecision()  is " + numObj.toPrecision());  //输出 5.123456console.log("numObj.toPrecision(5) is " + numObj.toPrecision(5)); //输出 5.1235console.log("numObj.toPrecision(2) is " + numObj.toPrecision(2)); //输出 5.1console.log("numObj.toPrecision(1) is " + numObj.toPrecision(1)); //输出 5// 注意:在某些情况下会以指数表示法返回console.log((1234.5).toPrecision(2)); // "1.2e+3"复制代码

toString : 方法返回指定 Number 对象的字符串表示形式。

numObj.toString([radix])

指定要用于数字到字符串的转换的基数(从2到36)。如果未指定 radix 参数,则默认值为 10。

如果对象是负数,则会保留负号。即使radix是2时也是如此:返回的字符串包含一个负号(-)前缀和正数的二进制表示,不是 数值的二进制补码。

toLocaleString : 方法返回这个数字在特定语言环境下的表示字符串。

numObj.toLocaleString([locales [, options]])

var number = 3500;console.log(number.toLocaleString()); // Displays "3,500" if in U.S. English locale复制代码

转载地址:http://qhtwl.baihongyu.com/

你可能感兴趣的文章
zabbix监控web
查看>>
gitlab+jenkins+maven+docker持续集成(二)——maven安装配置
查看>>
一次性去掉Word 2013文档中所有文字下波浪线的方法
查看>>
Oracle队列锁enq:TS,Temporary Segment (also TableSpace)
查看>>
MYSQL——数据修改
查看>>
中国的网站能活几天?
查看>>
PHP中发送邮件的几种方法总结
查看>>
vmware中修改虚拟机MAC地址的方法!
查看>>
RHCS集群 切换时defunct僵尸进程解决方案
查看>>
IOS:类方法(静态方法)和实例方法
查看>>
Zabbix监控CPU与实际值不符合,
查看>>
exchange2003系列总结:-5邮件加密与签名的工作流程
查看>>
Know Difference between Oracle Reserved Words and Keywords
查看>>
iOS-APP提交上架流程(新手必看!2016年3月1日最新版)
查看>>
***linux下mysql的root密码忘记解决方法
查看>>
AS3 属性绑定
查看>>
WindowsXP、Windows2003本地密码清除方法
查看>>
keepalived高可用LVS与Nginx
查看>>
Hadoop 2.x生态系统中常用框架
查看>>
如何得到当前程序执行的堆栈
查看>>