typeof 17// "number "
typeof 95.2// "number "
typeof -17// "number "
JavaScript 中的所有数字都是双精度浮点数。(注:类型---double float数据类型,此数据类型与单精度数据类型(float)相似,但精确度比float高,编译时所占的内存空间依不同的编译器而有所不同,通常情况,单精度浮点数占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位的精度,导致后面的一些位数会被舍弃,所以计算完成之后再次转化为十进制的时候就会出现偏差。
所以,为了防止这种情况出现,在浮点型计算操作的时候,尽可能的采去整数值运算。