JavaScript学习笔记之数值
JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。(整数也是通过64浮点数的形式来存储的)
所以,1+1.0=2;且1===1.0的
浮点数不是精确的值,所以涉及小数的比较和运算要特别小心
会出现这种诡异的问题
js中的数字都是用浮点数表示的,并规定使用IEEE 754 标准的双精度浮点数表示。
IEEE 754 规定了两种基本浮点格式:单精度和双精度。
国际标准IEEE 754,64位浮点数格式的64个二进制位中,第0位到第51位储存有效数字部分,第52到第62位储存指数部分,第63位是符号位,0表示正数,1表示负数
因此,JavaScript提供的有效数字的精度为53个二进制位(IEEE 754规定有效数字第一位默认为1,再加上后面的52位),也就是说,绝对值小于等于2的53次方的整数都可以精确表示。大于2的53次方之后的运算会开始出现错误。多出来的有效数字(最后三位的111)都会无法保存,变成0。
特殊数值:
一,正0和负0
1. 严格来说,JavaScript提供零的三种写法:0、+0、-0。它们是等价的。
2. 如果把正0和负0当作除数的分母,得到的结果是不一样的
+0 --〉+Infinity -0--〉-Infinity

二,NaN=Not a Number
解释:NaN是一个特殊的数值,这个数值用于表示一个本来应该返回数值的操作数未返回数值的情况(可以避免抛出错误)
注意:NaN不是一种独立的数据类型,而是一种特殊数值,它的数据类型依然属于Number
例如:在其他编程语言中任何数除于0都会出现错误,从而阻止程序的运行,但是在js中0/0会返回一个NaN,而不会影响其他代码的执行。
1. 任何涉及NaN的操作都会返回NaN
2. NaN与任何值都不相等,包括NaN本身
针对以上特点:定义了isNaN函数,该函数只接受一个参数,该函数在接受到一个参数后会试图把其转化为数值,
若可以转化为数值,则返回false,不能转化数组则返回true

isNaN也可以接受对象
判断NaN更可靠的方法是,利用NaN是JavaScript之中唯一不等于自身的值这个特点,进行判断。(NaN!==NaN)
三,infinity
Infinity表示“无穷”。除了0除以0得到NaN,其他任意数除以0,得到Infinity。
Infinity有正负之分。
运算结果超出JavaScript可接受范围,也会返回无穷。
由于数值正向溢出(overflow)、负向溢出(underflow)和被0除,JavaScript都不报错,所以单纯的数学运算几乎没有可能抛出错误。
Infinity减去或除以Infinity,得到NaN。

Infinity可以用于布尔运算。Infinity是JavaScript中最大的值(NaN除外),-Infinity是最小的值(NaN除外)。
isFinite()函数:isFinite函数返回一个布尔值,检查某个值是否为正常值,而不是Infinity。
注意:如果对NaN使用isFinite函数,也返回false,表示NaN不是一个正常值。

四,与数值相关的全局属性
parseInt()方法:parseInt方法可以将字符串或小数转化为整数。如果字符串头部有空格,空格会被自动去除。
如果字符串的第一个字符不能转化为数字(正负号除外),返回NaN。
parseInt方法还可以接受第二个参数(2到36之间),表示被解析的值的进制。
需要注意的是,如果第一个参数是数值,则会将这个数值先转为10进制,然后再应用第二个参数。如果第一个参数是字符串,则不会将其先转为十进制。
先把20转化为10进制=16,然后再把8进制的16转化成10进制
parseInt的很多复杂行为,都是由八进制的前缀0引发的。因此,ECMAScript 5不再允许parseInt将带有前缀0的数字,视为八进制数。但是,为了保证兼容性,大部分浏览器并没有部署这一条规定。
另外,对于那些会自动转为科学计数法的数字,parseInt会出现一些奇怪的错误。
parseFloat()方法:用于将一个字符串转为浮点数。
toFixed()方法:可以四舍五入保留一定为数的小数点
可以应用在计算器之类的功能上,防止0.1+0.2=0.30000...4的情况
返回的是字符串的形式
JavaScript学习笔记之数值的更多相关文章
- Java程序猿JavaScript学习笔记(2——复制和继承财产)
计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...
- JavaScript:学习笔记(2)——基本概念与数据类型
JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...
- Java程序猿的JavaScript学习笔记(汇总文件夹)
最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(3——this/call/apply)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿JavaScript学习笔记(4——关闭/getter/setter)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- Java程序猿JavaScript学习笔记(14——扩大jQuery UI)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
- JavaScript学习笔记之数组(二)
JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...
随机推荐
- SQL Server 得到数据库中所有表的名称及数据条数
--方法一if exists ( select * from dbo.sysobjects where id = object_id(N'[dbo].[TableSpace]') and object ...
- Kafka vs RocketMQ——多Topic对性能稳定性的影响-转自阿里中间件
引言 上期我们对比了RocketMQ和Kafka在多Topic场景下,收发消息的对比测试,RocketMQ表现稳定,而Kafka的TPS在64个Topic时可以保持13万,到了128个Topic就跌至 ...
- WPF中使用DynamicResource实现换肤
这篇将介绍使用DynamicResource实现动态的界面切换功能.熟悉WPF的园友应该已经猜到了实现方式,简而言之就是动态替换DataTemplate,ControlTemplate,Style等等 ...
- Idea在src下不能编译XML文件
IDEA编译XML文件,如果需要在src下编译就需要在maven配置中加如下配置: <build> <finalName>SpringDemo</finalName> ...
- 关于利用bat文件调用exe批量处理文件下的文件的问题
for %%i in (E:\radar_20120721\sjz_sa\*.bin) do start/wait radas.exe -i=%%i -o=E:\longjiang\out 找到 文件 ...
- Oracle的tnsnames.ora配置(PLSQL Developer)
首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...
- js 怎么屏蔽微信打开网页后的分享
我们知道 js 可以通过 window.navigator.userAgent 来获取浏览器的相关信息,比如:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537. ...
- selenium:org.openqa.selenium.WebDriverException: f.QueryInterface is not a function
今天用selenium2遇到问题 org.openqa.selenium.WebDriverException: f.QueryInterface is not a function 查了好久最后终于 ...
- 使用CocoaPods过程中 Unable to find a specification for
文章转自:http://blog.csdn.net/zhangao0086/article/details/39703083 当把CocoaPods生成的workspace移动到上层目录时,需要改下P ...
- Android Handler消息传递机制
在Android系统中,类Handler主要有如下两个作用. 在新启动的线程中发送消息. 在主线程中获取.处理消息. 类Handler在实现上述作用时,首先在新启动的线程中发送消息,然后在主线程中获取 ...