您的位置:首页 > Web前端 > JavaScript

Effective Javascript 阅读笔记(1)-理解Javascript 的浮点数

2018-01-10 14:32 260 查看
     对于数据类型,JavaScript 只有一种数据类型,无论是整数还是浮点,都会将它统一的处理为数字“number”类型。

typeof 17// "number "

typeof 95.2// "number "

typeof -17// "number "

JavaScript 中的所有数字都是双精度浮点数。(注:类型---double float数据类型,此数据类型与单精度数据类型(float)相似,但精确度比float高,编译
4000
时所占的内存空间依不同的编译器而有所不同,通常情况,单精度浮点数占4字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,;双精度型占8
个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。)

一般情况下除了位运算符比较特殊,其他的算数运算基本上都可以使用两者的组合进行运算。但是JavaScript会进行额外的工作。因为数字是已浮点数进行存储的,所以必须先转化为整数,然后在转化会浮点数。

因此就会导致一些计算过程的不精确



例如上面的例子,计算中会产生不精确的计算

实际上对于0.1+0.2,JavaScript首先先把0.1与0.2转化成二进制



由于在js中浮点数只有53位的精度,导致后面的一些位数会被舍弃,所以计算完成之后再次转化为十进制的时候就会出现偏差。

所以,为了防止这种情况出现,在浮点型计算操作的时候,尽可能的采去整数值运算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: