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