欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2.理解JavaScript的浮点数

程序员文章站 2024-01-28 10:56:52
...

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位的有符号整数。
  • 当心浮点运算中的精度陷阱。