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 相关文章推荐
js实现右下角可关闭最小化div(可用于展示推荐内容)
Jun 24 Javascript
jquery实现textarea 高度自适应
Mar 11 Javascript
javascript实现的闭包简单实例
Jul 17 Javascript
关于function类中定义变量this的简单说明
May 28 Javascript
jQuery图片左右滚动代码 有左右按钮实例
Jun 20 Javascript
javascript 中的继承实例详解
May 05 Javascript
微信小程序网络请求封装示例
Jul 24 Javascript
JS原生带缩略图的图片切换效果
Oct 10 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
Jan 08 Javascript
element-ui 时间选择器限制范围的实现(随动)
Jan 09 Javascript
使用vue实现HTML页面生成图片的方法
Mar 12 Javascript
vue实现移动端拖动排序
Aug 21 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
php实现session自定义会话处理器的方法
2015/01/27 PHP
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
jQuery 选择器理解
2010/03/16 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
pandas.cut具体使用总结
2019/06/24 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
python下载库的步骤方法
2019/10/12 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
What is view? why do we have view?
2012/06/22 面试题
英文版餐饮运营管理求职信
2013/11/06 职场文书
养殖人员的创业计划书范文
2013/12/26 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
个人催款函范文
2015/06/24 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL
Python Matplotlib绘制动画的代码详解
2022/05/30 Python
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL