在js中经常会遇到0.1+0.2!==0.3的情况,这种情况是由于浮点数计算时得到的结果有精度问题,
计算机内部存储数据是将所有的数据按照二进制文件进行存储,而存在某些小数无法精确的用二进制来表示,因此才会导致在浮点数计算时出现精度问题
对于计算机而言,两个数字之间相加时通过二进制进行的,相加完成结果才会以十进制形式展示,js中的数字是通过IEEE 754双精度64位表示的
将0.1转换成二进制的过程
0.1 * 2 = 0.2 - - - - - - - - - - 取0
0.2 * 2 = 0.4 - - - - - - - - - - 取0
0.4 * 2 = 0.8 - - - - - - - - - - 取0
0.8 * 2 = 1.6 - - - - - - - - - - 取1
0.6 * 2 = 1.2 - - - - - - - - - - 取1
0.2 * 2 = 0.4 - - - - - - - - - - 取0
----------------
算到这就会发现小数部分再怎么继续乘都不会等于0,所以二进制是没办法精确表示0.1的。
如何结果这种行为,主要有以下方式
将小数转换为整数,结果再以小数的形式展示
转载于:https://www.jianshu.com/p/6f44313abd92