Js中Number对象
Js中Number对象
JavaScript的Number对象是经过封装从而能够处理数字值的对象,Number对象由Number()构造器以及字面量声明的值在转化为包装对象时创建,JavaScript的Number类型为双精度IEEE 754 64位浮点类型。
描述
创建一个数字可以通过字面量的方式,通过字面量创建的数字变量在调用方法的时候能够自动转化为临时的包装对象,从而能够调用其构造函数的原型中的方法,也可以利用Number对象生成数值对象,JavaScript的Number类型为双精度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是小数点后数字的个数,介于0到20(包括)之间,实现环境可能支持更大范围,如果忽略该参数,则默认为0。
var num = new Number(1.1);
console.log(num.toFixed(6)); // 1.100000
Number.prototype.toLocaleString()
numObj.toLocaleString([locales [, options]])
toLocaleString()方法返回这个数字在特定语言环境下的表示字符串。新的locales和options参数让应用程序可以指定要进行格式转换的语言,并且定制函数的行为。在旧的实现中,会忽略locales和options参数,使用的语言环境和返回的字符串的形式完全取决于实现方式。
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指定要用于数字到字符串的转换的基数(从2到36),如果未指定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对象的更多相关文章
- js中Number对象与MATH方法整理总结
W3C的文档: Number 对象属性 属性 描述 constructor 返回对创建此对象的 Number 函数的引用. MAX_VALUE 可表示的最大的数. MIN_VALUE 可表示的最小的数 ...
- js中判断对象具体类型
大家可能知道js中判断对象类型可以用typeof来判断.看下面的情况 <script> alert(typeof 1);//number alert(typeof "2" ...
- 浅解析js中的对象
浅解析js中的对象 原文网址:http://www.cnblogs.com/foodoir/p/5971686.html,转载请注明出处. 前面的话: 说到对象,我首先想到的是每到过年过节见长辈的时候 ...
- js中推断对象详细类型
大家可能知道js中推断对象类型能够用typeof来推断. 看以下的情况 <script> alert(typeof 1);//number alert(typeof "2&quo ...
- JS中的对象和方法简单剖析
众所周知,在js中对象就是精髓,不理解对象就是不理解js. 那么什么事js中的对象呢? 在js中,几乎一切皆对象: Boolean ,String,Number可以是对象(或者说原生数据被认作对象): ...
- 深入理解JS中的对象(一)
目录 一切皆是对象吗? 对象 原型与原型链 构造函数 参考 1.一切皆是对象吗? 首先,"在 JavaScript 中,一切皆是对象"这种表述是不完全正确的. JavaScript ...
- 深入理解JS中的对象(二):new 的工作原理
目录 序言 不同返回值的构造函数 深入 new 调用函数原理 总结 参考 1.序言 在 深入理解JS中的对象(一):原型.原型链和构造函数 中,我们分析了JS中是否一切皆对象以及对象的原型.原型链和构 ...
- JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)
1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...
- js中XMLHttpRequest对象实现GET、POST异步传输
js中XMLHttpRequest对象实现GET.POST异步传输 /* * 统一XHR接口 */ function createXHR() { // IE7+,Firefox, Opera, Chr ...
- JavaScript学习12 JS中定义对象的几种方式
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...
随机推荐
- [转帖]Spring为啥不推荐使用@Autowired注解?
https://my.oschina.net/u/5079097/blog/5289666 引言 使用IDEA开发时,同组小伙伴都喜欢用@Autowired注入,代码一片warning,看着很不舒 ...
- [转帖]《Linux性能优化实战》笔记(25)—— 总结:Linux 性能工具速查
一. 性能工具速查 在梳理性能工具之前,首先给你提一个问题,那就是,在什么情况下,我们才需要去查找.挑选性能工具呢? 其实在我看来,只有当你想了解某个性能指标,却不知道该怎么办的时候,才会想到,&qu ...
- [转帖]Red Hat Enterprise Linux 8 和 9 中可用的 IO 调度程序
Red Hat 弃用了 Red Hat Enterprise Linux 7 中可用的 I/O 调度程序,并引入了四个新的 I/O 调度程序,如下所示, 运行以下命令检查 RHEL8 和 RHEL9 ...
- [转帖]Linux IO调度之队列、队列深度
有关数据结构 请求队列:struct request_queue 请求描述符:struct request 队列深度 可以在端口队列中等待IO请求数量: 具体代表其值的是request_queue的成 ...
- 使用 Taro 开发鸿蒙原生应用 —— 探秘适配鸿蒙 ArkTS 的工作原理
背景 在上一篇文章中,我们已经了解到华为即将发布的鸿蒙操作系统纯血版本--鸿蒙 Next,以及各个互联网厂商开展鸿蒙应用开发的消息.其中,Taro作为一个重要的前端开发框架,也积极适配鸿蒙的新一代语言 ...
- NutUI 4.0 正式发布!
作者: 京东零售 NutUI NutUI 4.0 Github 地址:github.com/jdf2e/nutui NutUI 4.0 官网:nutui.jd.com 前言 技术日异月新.发展创新.持 ...
- css伪类和伪元素在项目中的使用-红色*显示
CSS使用伪类给表单添加星号 <style type="text/css"> .form-item label::before { content: '*'; colo ...
- 火狐谷歌浏览器去掉input type=number时控件的方法
html 默认:<input type="number" /></br> 处理:<input type="number" clas ...
- 原生js拖拽元素(onmouseup不能够触发的原因)
我们经常会遇见拖拽某一个元素的场景,拖拽也是很常用的: 这次拖拽遇见一个问题,有时在拖拽的时候吗,鼠标松开,元素仍然可以拖拽: 经过查阅资料,发现: 会触发H5原生的拖拽事件.并且不会监听到onmou ...
- ABP-VNext 用户权限管理系统实战05----扩展授权类型(单点登录)
一.适合场景: 1.我方系统在集成到别人的集成本台时一般是拿别的平台的用户名,在我方系统进行登录 2.我方系统是前后端分离,前端要拿到token 二.解决方案:自定义授权类型 我们知道Identity ...