[javascript|基本概念|Number]学习笔记
Number类型的值:整数/浮点数值
整数
十进制 e.g.: var intNum = 50;
八进制 (严格模式下无效,解析错误)字面值首位必须是0,之后的数字序列为0~7 e.g.: var intNum = 070; //解析为十进制56 (如果字面值数值超出了范围,前导0将被忽略,后面的数值将被当做十进制数值解析 e.g.: var intNum = 078; //无效的八进制数字,解析为十进制78)
十六进制 字面值的前两位必须是0x(或0X),之后的数据序列为0~7或A~F(可大写,亦可小写) e.g.:var intNum = 0xA; //解析为十进制10
算数计算时,所有以八进制和十六进制表示的数值最终都会转换成十进制数值计算
浮点数
数值中必须包含一个小数点,且小数点后面必须至少有一个数字 e.g.: var floatNum = 1.5;(小数点前面可以没有整数,e.g.: var floatNum = .5; //有效,解析为0.5,但不推荐)
如果小数点后面没有数字,将被解析为整数值 e.g.: var floatNum = 5.; //解析为整数5 (因为浮点数保存需要的内存空间是整数保存的两倍,ECMAScript会不失时机地将浮点数值转为整数值)
科学计数法 极大或极小的数值可附加e(或E)来表示,等同于e前面的数值乘以10的指数次幂
数值范围
最大值:Number.MAX_VALUE 1.7976931348623157e+308
最小值:Number.MIN_VALUE 5e-324
超出最值,自动转换成Infinity/-Infinity 无穷值无法参与计算 (Number.POSITIVE_INFINITY/Number.NEGATIVE_INFINITY也分别保存着Infinity/-Infinity)
判断是否是有穷值 isFinite(arg) arg可以为任何类型的数据,非Number数据将隐式转换成Number数据
NaN
非数值(Not a Number)保存一个本来要返回数值但未返回数值的数据 如任何数值除以0,返回NaN
任何与NaN的操作都会返回NaN
NaN与任何值都不想等,包括NaN本身
判断是否未NaN isNaN(arg) arg可以为任何类型的数据,非Number数据将隐式转换成Number数据
数值转换
Number()/parseInt()/parseFloat()
Number()可用于任何数据类型转换成数值 parseInt()/parseFloat()一般用于字符串转换成数值
Number()转换规则:
Boolean true-->1 false-->0
Number 返回本身
null 0
undefined NaN
String a/只包含数字(包括前面带正好或符号)-->十进制数值 (前导为0的忽略0,不会转换成八进制/前导为0x的,转换为十六进制大小的十进制)
b/只包含浮点-->对应的浮点数值(前导0被忽略)
c/只包含空字符串-->0
d/包含其他字符-->NaN
parseInt()转换规则:(正因为Number()处理字符串转换过于复杂,一般字符串转换用parseInt()比较好)
主要看其是否符合数值模式
忽略字符串前面的空格,直到找到第一个非空格字符
a/第一个字符不是数字或正负号-->NaN e.g.:parseInt("abcd")-->NaN e.g.:parseInt("")-->NaN(区别Number("")-->0)
b/第一个字符是数字字符,顺序解析第二个,直到解析完所有字符或遇到非数字字符结束-->已成功解析为数字的数字字面量 e.g.:parseInt("1234blue")-->1234
c/能够解析Number类型的整数的各种格式:十进制/八进制/十六进制(parseInt()可以传递第二个参数:多少进制;十六进制可以不带前面的0x,推荐传递带两个参数的方式) e.g.:parseInt("0xA")-->10 parseInt("A", 16)-->10
parseFloat()转换规则:
类似parseInt()
字符中有两个以上的小数点时,第一个小数点有效,第二个之后都无效,且后面的字符被忽略 e.g.:parseFloat("11.22.33")-->11.22
只解析十进制格式字符串,没有第二个参数指定转换方式
十六进制格式字符串-->0 e.g.:parseFloat("0xA")-->0
没有小数点的整数字符串-->整数 e.g.:parseFloat("1234blue")-->1234
科学计数法 e.g.:parseFloat("3.14e2")-->314
[javascript|基本概念|Number]学习笔记的更多相关文章
- 《零基础学JavaScript(全彩版)》学习笔记
<零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...
- 《JavaScript语言精粹》学习笔记
一.in的用法 for...in 枚举一个对象的所有可枚举属性 检测DOM/BOM属性 if ("onclick" in elem) { // 元素支持onclick } if ( ...
- 《JavaScript高级程序设计》学习笔记12篇
写在前面: 这12篇博文不是给人看的,而是用来查的,忘记了什么基础知识,点开页面Ctrl + F关键字就好了 P.S.如果在对应分类里没有找到,麻烦告诉我,以便尽快添上.当然,我也会时不时地添点遗漏的 ...
- 《JavaScript权威指南》学习笔记 第六天 开始学习DOM了。
昨天学习了window对象的一些方法.window对象主要是针对当前视窗的操作.window对象提供了一些列API来帮助我们了解当前窗口的信息.例如history对象可以让我们获取浏览历史.nvaig ...
- 《JavaScript高级程序设计》学习笔记(4)——引用类型
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...
- 1 《JavaScript高级程序设计》学习笔记(1)
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 首先,我将从<JavaScript高级程序设计>这本JavaScript学习者必看的经典教 ...
- 《JavaScript权威指南》学习笔记 第五天 window对象的方法。
前天和昨天大致浏览了犀牛书的函数.类与模块.正则表达式.JavaScript扩展.以及服务端的js.这些方面对于我目前的水平来说比较难,一些最基本的概念都不能领会.不过最复杂的知识占用平时使用的20% ...
- 《JavaScript高级程序设计》学习笔记
系统学习JS, 从<JavaScript高级程序设计>入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...
- 《JavaScript高级程序设计》学习笔记(5)——面向对象编程
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...
随机推荐
- 在XAF应用程序使用现有的数据库?
https://documentation.devexpress.com/#Xaf/CustomDocument3061
- Caused by: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
最近,在android中用代码动态改变某种布局(组件)的高度时,会遇到如题所示的类转换异常.上网查了一下,如下所示: These supply parameters to the parent of ...
- Ambari源代码分析之总览
一.基本概念: Resource:Ambari把能够被管理的资源的抽象为一个Resource实例,资源能够包括服务.组件.主机节点等,一个resource实例中包括了一系列该资源的属性: Proper ...
- direction:rtl demo
<style> body {font:14px/18px Consolas;} div { width:100px;padding:10px; margin:10px 0px 30px 0 ...
- D2 前端技术论坛总结(下)
此篇文章不接上篇了,下午4场我就不一一介绍了,主要总结下 D2 整场下来都讲了些什么. 整场下来,就3个关键词:nodejs,多终端,工程化 nodejs 从杭js到d2,大会上提到最多的词汇 ...
- Linux服务器集群系统(三)--转
引用地址:http://www.linuxvirtualserver.org/zh/lvs3.html LVS集群中的IP负载均衡技术 章文嵩(wensong@linux-vs.org) 2002 年 ...
- Redis 管道技术
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务.这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响 ...
- 开发工具 之 PowerDesigner 应用积累
1.在默认情况下,code与name是联动,修改了name中的数据. 解决方法:设置菜单栏选择"Tools→General Options→Dialog" 中的 "Na ...
- easyui datagrid 列拖拽2
1.拖动前 2.拖动中 3.拖动后 5.代码1 $("#corp-grid").datagrid({ title:"泥头车企业管理", toolbar:&quo ...
- Android&iOS崩溃堆栈上报
Android&iOS崩溃堆栈上报 原文地址:http://www.cnblogs.com/songcf/p/4885468.html 通过崩溃捕获和收集,可以收集到已发布应用(游戏)的异常, ...