因为浮点数的计算存在 round-off 问题,也就是浮点数不能够进行精确的计算。并且:

  • 不仅javascript,所有遵循 IEEE-754 规范的语言都是如此
  • 在 javascript,所有的Number 都是以 64 bit 的双精度浮点数存储的
  • 双精度的浮点数在这 64位上划分为 3 段 1 - 11 - 52 的模式
    • 1个最高位表示符号位
    • 11位表示指数位
    • 52位表示尾数部分。

js 解决: Math.js big.js decimal.js