👮0.1+0.2 != 0.3??.👮

👮0.1+0.2 != 0.3??👮

我们存储的数字在转化为2进制 的情况下有效数字大于52(#`O′),就会出现精度丢失的问题

0.1【转化二进制】

0.0001100110011001100110011001100110011001100110011001101

0.2【转化二进制】

0.001100110011001100110011001100110011001100110011001101

js在存储的时候,超出52(#`O′)会被处理掉,所以设计js计算浮点数时会产生各种奇怪 的问题,因为你完全不知道,什么时候误差被省略了,什么时候误差刚好对上是正确结果

💄解决办法

  • 使用toFixed去解决问题

    Number((0.1 + 0.2). toFixed(2)) === 0.3