探寻 JavaScript 精度问题以及解决方案
阅读完本文可以了解到 0.1+0.2 为什么等于 0.30000000000000004 以及 JavaScript 中最大安全数是如何来的。 十进制小数转为二进制小数方法 拿 173.8125 举例如何将之转化为二进制小数。 ① 针对整数部分 173,采取 除2取余,逆序排列。 173 / 2 = 86 ... 1 86 / 2 = 43 ... 0 43 / 2 = 21 ... 1 ↑ 21 / 2 = 10 ... 1 | 逆序排列 10 / 2 = 5 ... 0 | 5 / 2 = 2 ... 1 | 2 / 2 = 1 ... 0 1 / 2 = 0 ... 1 得整数部分的二进制为 10101101。 ② 针对小数部分 0.8125,采用 乘2取整,顺序排列。 0.8125 * 2 = 1.625 | 0.625 * 2 = 1.25 | 顺序排列 0.25 * 2 = 0.5 | 0.5 * 2 = 1 ↓ 得小数部分的二进制为 1101。 ③ 将前面两部的结果相加,结果为 10101101.1101。 小心,二进制小数丢失了精度! 根据上面的...