2.理解JavaScript的浮点数

JavaScript中所有的数字都是双精度浮点数

typeof 17; // "number"
typeof 98.6; //"number"
typeof - 2.1; //"number"

JavaScript不会直接将操作数作为浮点数进行运算,而是会将其隐式地转换为32位整数后进行计算。

8 | 1; // 9
1000 | 0001; // 1001

警惕浮点数的不精确

0.1 + 0.2; // 0.30000000000000004
(0.1 + 0.2) + 0.3; // 0.6000000000000001
0.1 + (0.2 + 0.3); // 0.6

解决方法是尽可能地采用整数值进行运算,当进行货币相关的计算时,通常会按比例转换为最小的货币单位来表示再进行计算。使用类库来进行数学计算例如decimal.js

提示

  • JavaScript的数字都是双精度的浮点数。
  • JavaScript中的整数仅仅是双精度浮点数的一个子集,而不是一个单独的数据类型。
  • 位运算符将数字视为32位的有符号整数。
  • 当心浮点运算中的精度陷阱。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。