Js中Number对象

JavaScriptNumber对象是经过封装从而能够处理数字值的对象,Number对象由Number()构造器以及字面量声明的值在转化为包装对象时创建,JavaScriptNumber类型为双精度IEEE 754 64位浮点类型。

描述

创建一个数字可以通过字面量的方式,通过字面量创建的数字变量在调用方法的时候能够自动转化为临时的包装对象,从而能够调用其构造函数的原型中的方法,也可以利用Number对象生成数值对象,JavaScriptNumber类型为双精度IEEE 754 64位浮点类型,如果是索引数字例如Array.length则是32位单精度,此外当JavaScript遇到一个数值时,其会首先尝试按整数处理数值,如果可以作为整数处理就使用有符号32位整型处理,如果数值不能作为整数或者超出有符号整型范围,就把数值保存为64位的IEEE 754浮点数。

var a = 1;
var b = Number("1");
var c = new Number("1");
console.log(a); // 1
console.log(b); // 1
console.log(c); // Number {1}
console.log(a instanceof Number); // false
console.log(b instanceof Number); // false
console.log(c instanceof Number); // true
var arr = new Array(Math.pow(2,32)-1); // 4294967295 // [0 - 4294967294]
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
console.log(Number("a")); // NaN // NaN !== NaN
console.log(Number("1.1")); // 1.1
console.log(Number("0x11")); // 17
console.log(Number("0b11")); // 3
console.log(Number("0o11")); // 9
console.log(Number("Infinity")); // Infinity

属性

  • Number.EPSILON: 两个可表示representable数之间的最小间隔。
  • Number.MAX_SAFE_INTEGER: JavaScript中最大的安全整数2^53 - 1
  • Number.MAX_VALUE: 能表示的最大正数,最小的负数是-MAX_VALUE
  • Number.MIN_SAFE_INTEGER: JavaScript中最小的安全整数-(2^53 - 1).
  • Number.MIN_VALUE: 能表示的最小正数即最接近0的正数,实际上不会变成0,最大的负数是-MIN_VALUE
  • Number.NaN: 特殊的非数字值。
  • Number.NEGATIVE_INFINITY: 特殊的负无穷大值,在溢出时返回该值。
  • Number.POSITIVE_INFINITY: 特殊的正无穷大值,在溢出时返回该值。
  • Number.prototype: Number对象上允许的额外属性。

方法

Number.isNaN()

Number.isNaN(value)

Number.isNaN()方法确定传递的值是否为NaN,并且检查其类型是否为Number,其是原来的全局isNaN()的更稳妥的版本。

console.log(Number.isNaN(NaN)); // true // NaN !== NaN
console.log(Number.isNaN(Number("1"))); // false
console.log(Number.isNaN(Number("a"))); // true

Number.isFinite()

Number.isFinite(value)

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

console.log(Number.isFinite(NaN)); // false
console.log(Number.isFinite("1")); // false // 全局方法 isFinite("1") 返回 true
console.log(Number.isFinite(1 / 0)); // false
console.log(Number.isFinite(0 / 0)); // false
console.log(Number.isFinite(0.1 + 0.1)); // true
console.log(Number.isFinite(Infinity)); // false

Number.isInteger()

Number.isInteger(value)

Number.isInteger()方法用来判断给定的参数是否为整数。

console.log(Number.isInteger(NaN)); // false
console.log(Number.isInteger("1")); // false
console.log(Number.isInteger(1)); // true

Number.isSafeInteger()

Number.isSafeInteger(testValue)

Number.isSafeInteger()方法用来判断传入的参数值是否是一个安全整数safe integer。一个安全整数是一个符合下面条件的整数:

  • 可以准确地表示为一个IEEE-754双精度数字。
  • IEEE-754表示不能是舍入任何其他整数以适应IEEE-754表示的结果。

例如,2^53 - 1是一个安全整数,它能被精确表示,在任何IEEE-754舍入模式rounding mode下,没有其他整数舍入结果为该整数。作为对比,2^53就不是一个安全整数,它能够使用IEEE-754表示,但是2^53 + 1不能使用IEEE-754直接表示,在就近舍入round-to-nearest和向零舍入中,会被舍入为 2^53。安全整数范围为-(2^53 - 1)2^53 - 1之间的整数,包含-(2^53 - 1)2^53 - 1

console.log(Number.isSafeInteger(NaN)); // false
console.log(Number.isSafeInteger(1)); // true
console.log(Number.isSafeInteger(1.1)); // false
console.log(Number.isSafeInteger("1")); // false
console.log(Number.isSafeInteger(Math.pow(2, 53))); // false
console.log(Number.isSafeInteger(Math.pow(2, 53) - 1)); // true
console.log(Number.isSafeInteger(Infinity)); // false

Number.parseFloat()

Number.parseFloat(string)

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

console.log(Number.parseFloat(NaN)); // NaN
console.log(Number.parseFloat("1.1")); // 1.1
console.log(Number.parseFloat(Infinity)); // Infinity

Number.parseInt()

Number.parseInt(string[, radix])

Number.parseInt()方法依据指定基数即参数radix的值,把字符串解析成整数,如果无法被解析成整数,则返回NaN,该方法与全局的parseInt()函数相同,并且处于ECMAScript 6规范中,用于全局变量的模块化。

console.log(Number.parseInt(NaN)); // NaN
console.log(Number.parseInt("1.1")); // 1
console.log(Number.parseInt("11")); // 11
console.log(Number.parseInt("11", 2)); // 3
console.log(Number.parseInt("11", 3)); // 4
console.log(Number.parseInt("11", 8)); // 9
console.log(Number.parseInt("11", 16)); // 17
console.log(Number.parseInt(Infinity)); // NaN

Number.prototype.toExponential()

numObj.toExponential(fractionDigits)

toExponential()方法以指数表示法返回该数值字符串表示形式。参数fractionDigits可选,其为一个整数用来指定小数点后有几位数字,默认情况下用尽可能多的位数来显示数字。返回一个用幂的形式 (科学记数法) 来表示Number对象的字符串,小数点后以fractionDigits提供的值来四舍五入,如果fractionDigits参数被忽略了,小数点后的将尽可能用最多的位数来表示该数值,对数值字面量使用toExponential()方法,且该数值没有小数点和指数时,应该在该数值与该方法之间隔开一个空格,以避免点号被解释为一个小数点,也可以使用两个点号调用该方法。如果一个数值的小数位数多余fractionDigits参数所提供的,则该数值将会在fractionDigits指定的小数位数处四舍五入。

var num = new Number(100.1);
console.log(num.toExponential()); // 1.001e+2

Number.prototype.toFixed()

numObj.toFixed(digits)

toFixed()方法使用定点表示法来格式化一个数值,该数值在必要时进行四舍五入,另外在必要时会用0来填充小数部分。参数digits是小数点后数字的个数,介于020(包括)之间,实现环境可能支持更大范围,如果忽略该参数,则默认为0

var num = new Number(1.1);
console.log(num.toFixed(6)); // 1.100000

Number.prototype.toLocaleString()

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

toLocaleString()方法返回这个数字在特定语言环境下的表示字符串。新的localesoptions参数让应用程序可以指定要进行格式转换的语言,并且定制函数的行为。在旧的实现中,会忽略localesoptions参数,使用的语言环境和返回的字符串的形式完全取决于实现方式。

var num = new Number(1.1);
console.log(num.toLocaleString()); // 1.1

Number.prototype.toPrecision()

numObj.toPrecision(precision)

toPrecision()方法以指定的精度返回该数值对象的字符串表示。参数precision可选,一个用来指定有效数个数的整数。

var num = new Number(1.1);
console.log(num.toPrecision(6)); // 1.100000

Number.prototype.toString()

numObj.toString([radix])

toString()方法返回指定Number对象的字符串表示形式。参数radix指定要用于数字到字符串的转换的基数(从236),如果未指定radix参数,则默认值为10

var num = new Number(10);
console.log(num.toString(2)); // 1010

Number.prototype.valueOf()

numObj.valueOf()

valueOf()方法返回一个被Number对象包装的原始值。

var num = new Number(10);
console.log(num.valueOf()); // 10

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://www.boatsky.com/blog/26
https://segmentfault.com/a/1190000000407658
https://blog.csdn.net/abcdu1/article/details/75095781
https://en.wikipedia.org/wiki/Floating-point_arithmetic
https://blog.csdn.net/weixin_43675244/article/details/89518309
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number

Js中Number对象的更多相关文章

  1. js中Number对象与MATH方法整理总结

    W3C的文档: Number 对象属性 属性 描述 constructor 返回对创建此对象的 Number 函数的引用. MAX_VALUE 可表示的最大的数. MIN_VALUE 可表示的最小的数 ...

  2. js中判断对象具体类型

    大家可能知道js中判断对象类型可以用typeof来判断.看下面的情况 <script> alert(typeof 1);//number alert(typeof "2" ...

  3. 浅解析js中的对象

    浅解析js中的对象 原文网址:http://www.cnblogs.com/foodoir/p/5971686.html,转载请注明出处. 前面的话: 说到对象,我首先想到的是每到过年过节见长辈的时候 ...

  4. js中推断对象详细类型

    大家可能知道js中推断对象类型能够用typeof来推断. 看以下的情况 <script> alert(typeof 1);//number alert(typeof "2&quo ...

  5. JS中的对象和方法简单剖析

    众所周知,在js中对象就是精髓,不理解对象就是不理解js. 那么什么事js中的对象呢? 在js中,几乎一切皆对象: Boolean ,String,Number可以是对象(或者说原生数据被认作对象): ...

  6. 深入理解JS中的对象(一)

    目录 一切皆是对象吗? 对象 原型与原型链 构造函数 参考 1.一切皆是对象吗? 首先,"在 JavaScript 中,一切皆是对象"这种表述是不完全正确的. JavaScript ...

  7. 深入理解JS中的对象(二):new 的工作原理

    目录 序言 不同返回值的构造函数 深入 new 调用函数原理 总结 参考 1.序言 在 深入理解JS中的对象(一):原型.原型链和构造函数 中,我们分析了JS中是否一切皆对象以及对象的原型.原型链和构 ...

  8. JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)

    1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...

  9. js中XMLHttpRequest对象实现GET、POST异步传输

    js中XMLHttpRequest对象实现GET.POST异步传输 /* * 统一XHR接口 */ function createXHR() { // IE7+,Firefox, Opera, Chr ...

  10. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

随机推荐

  1. 【Gerrit】 快捷操作

    A:添加Reviewers V+B:Pachset刷到最新 D:Download patch J.K:文件移动选中 R:文件Reviewed状态修改 S:五星状态修改,可用于分类管理 U:返回上层 I ...

  2. 【ARM】重新定义低级库函数,以便能够直接使用 C 库中的高级库函数

    Redefining low-level library functions to enable direct use of high-level library functions in the C ...

  3. 单例bean与原型bean的区别

    在使用Spring开发时,Spring提供了五种scope,分别为singleton,prototype,request,session,global session. 上图为各个scope描述的官方 ...

  4. 一种基于linux系统的精准流量统计方法

    ​ 前言: 在linux系统关于流量统计,已经有开源的工具,比如nethogs,nload和iptraf.它们适合我们在PC上直接监控某台设备的流量情况,但并不适合我们应用到自己的程序中去. 如果要在 ...

  5. [转帖]Oracle数据库中ITL详解

    首先说明这篇文章是转载的,原文地址:http://blog.sina.com.cn/s/blog_616b428f0100lwvq.html 1.什么是ITL ITL(Interested Trans ...

  6. [转帖]人大金仓和PG的关系

    作者:山抹微云链接:https://www.zhihu.com/question/582960448/answer/2997151260来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  7. [转帖]整理常用的 vim 命令

    vim 是一款功能强大的文本编辑器,它是Linux下常用的编辑器之一,对于熟练掌握了 vim 的人来说,用它编辑文件,方便又快捷,能极大的提高工作效率 vim 功能强大,对应的命令也非常的多,对于初学 ...

  8. mysql8 CentOS7 简要安装说明

    1. 卸载mariadb rpm -qa |grep mariadb |xargs yum remove -y比较简单的卸载办法. 2. 安装所有的rpm包. yum localinstall *.r ...

  9. TypeScript数组类型定义

    第一种方式:可以在元素类型后面接上 [],表示由此类型元素组成的一个数组: var arr: number[] = [1, 2, 3]; //数字类型的数组 var arr2: string[] = ...

  10. mysql系列基础篇03----约束

    一.概述 1.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据 2.目的:保证数据库中数据的正确,有效性和完整性. 3.分类  二.约束演示 创建一个用户表 create table my ...