Skip to content

0.1+0.2不等于0.3

January 12, 2023 | 11:19 AM

0.1+0.2不等于0.3

总结一下主要是以下几个原因:

  1. JavaScript的浮点数运算是会先转换成二进制再进行运算(运算时才会,单纯的输出小数不会出现精度丢失的情况)
  2. 十进制转换二进制遵循*2顺取整直至1的原则,部分小数会陷入循环
  3. 二进制会从第一个1后开始向后保留52位有效数字且最后一位遵循0舍1入的原则—因此也有了最大安全整数2*53-1 1+52位=53位