2019-06-03js浮点数精度问题

在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

猜你喜欢

转载自blog.csdn.net/weixin_33912638/article/details/91050496