JavaScript数值类型知识汇总


Posted in Javascript onNovember 17, 2019

整数

  • 十进制
  • 二进制

以零为开头,后面接一个小写或大写的拉丁文字母B(0b或者是0B)

  • 八进制

以0开头,然后是八进制数字序列(0-7) , 如果字面值中的数值超出范围,那么前导0将被忽略,后面的数值当作十进制解析。

  • 十六进制

十六进制字面值的前两位必须是 0x,后跟任何十六进制数字(0~9 及 A~F)。其中,字母 A~F可以大写,也可以小写;

浮点数

保存浮点数需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机的将浮点数转换为整数值。

var floatNum1 = 1.; // 小数点后面没有数字——解析为 1
var floatNum2 = 10.0; // 整数——解析为 10

默认会将小数点后面带有6个零以上的浮点数值转换为以e表示法表示的数值;

浮点数值的最高精度是17位小数;

数值范围

最大值Number.MAX_VALUE 1.7976931348623157e+308

最小值Number.MIN_VALUE 5e-324

  • Number.MIN_VALUE < var1 < Number.MAX_VALUE , isFinite(var1)返回false, 否则返回true
  • 如果值超过了js数值范围,那么这个数值自动被转换成特殊的Infinity值。实际情况 Number.MAX_VALUE + 1 还等于 Number.MAX_VALUE;
  • isFinite()函数判断数值是否位有穷,参数位于最小与最大数值之间时会返回 true

NaN

  • 任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN
  • NaN 与任何值都不相等,包括 NaN 本身
  • 实际上只有 0 除以 0 才会返回 NaN,正数除以 0 返回 Infinity,负数除以 0 返回-Infinity
  • isNaN() 。在接收到一个值之后,会尝试将这个值转换为数值。也适用于对象,先调用对象的valueOf()判断是否能转成数值,若不能调用toString()再测试返回值。

数值转换

有 3 个函数可以把非数值转换为数值: Number()、 parseInt()和 parseFloat()

Number()

  1. 如果是boolean类型, true返回1,false返回0;
  2. 如果是数值,只是简单的传入返回;
  3. 如果是null,返回0
  4. 如果是undefined, 返回NaN;
  5. 如果是字符串,字符串如果只包含数字,则将其转换成十进制数;如果是有效的浮点格式,将其转换成对应的浮点数值;如果是二进制或十六进制将其转换成对应的十进制数值;
alert(Number("3.14e5"));  // 314000
alert(Number("0b1111"));  // 15, 将二进制转换为十进制
alert(Number("017"));    // 17, 不会转为8进制
alert(Number("0x1a"));   // 26, 转换为16进制
alert(Number(""));     // 空字符串,返回0
alert(Number("1a"));    // 返回NaN

   6.如果是对象,调用对象的valueOf()方法,然后依照前面规则转换,如果valueOf返回值是NaN,则调用toString()方法,再依照前面的规则转换返回的字符串

parseInt()

第一个参数,要解析的数值字符串;第二个参数采用多少进制,不指定基数意味着让 parseInt()决定如何解析输入的字符串;

  1. 如果第一个字符不是数字字符或者负号, parseInt()就会返回 NaN;
  2. parseInt()转换空字符串会返回 NaN
  3. 如果第一个字符是数字字符, parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。
parseInt("1234blue")  // 1234, blue忽略

parseInt("22.5");  // 22

parseInt不能解析二进制的数值,在ES5中,也不能解析八进制的数值;

parseInt("0b1111");   // 0
parseInt("071");  // 71,

parseFloat()

  1. parseFloat()只解析十进制值,因此它没有用第二个参数;
  2. 从第一个字符(位置 0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止;
  3. 它始终都会忽略前导的零
var num1 = parseFloat("1234blue"); //1234 (整数)
var num2 = parseFloat("0xA"); //0
var num3 = parseFloat("22.5"); //22.5
var num4 = parseFloat("22.34.5"); //22.34
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat("3.125e7"); //31250000

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
解决jquery .ajax 在IE下卡死问题的解决方法
Oct 26 Javascript
jquery CSS选择器笔记
Mar 29 Javascript
js时间比较示例分享(日期比较)
Mar 05 Javascript
node.js中的favicon.ico请求问题处理
Dec 15 Javascript
jQuery前端分页示例分享
Feb 10 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 Javascript
javascript实现抽奖程序的简单实例
Jun 07 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
Mar 28 Javascript
解决select2在bootstrap modal中不能正常使用的问题
Aug 09 Javascript
vue展示dicom文件医疗系统的实现代码
Aug 27 Javascript
Vue组件通信$attrs、$listeners实现原理解析
Sep 03 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 #Javascript
AngularJS动态生成select下拉框的方法实例
Nov 17 #Javascript
24行JavaScript代码实现Redux的方法实例
Nov 17 #Javascript
JavaScript如何处理移动端拍摄图片旋转问题
Nov 16 #Javascript
JS Ajax请求会话过期处理问题解决方法分析
Nov 16 #Javascript
vue中注册自定义的全局js方法
Nov 15 #Javascript
微信sdk实现禁止微信分享(使用原生php实现)
Nov 15 #Javascript
You might like
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
深入PHP curl参数的详解
2013/06/17 PHP
php计算税后工资的方法
2015/07/28 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
IE8 中使用加速器(Activities)
2010/05/14 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
Python转换时间的图文方法
2019/07/01 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
教师找工作推荐信
2013/11/23 职场文书
挂职思想汇报
2013/12/31 职场文书
2014年大学生自我评价
2014/01/19 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
2015年推普周活动总结
2015/03/27 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js