在学习小程序商城源码时发现了这个问题,单价可能出现小数,小数之间运算结果会莫名其妙多出一大串数字,好比下面这样👇。html
在此以前我是知道 js 中著名的 0.1 + 0.2 != 0.3
的问题的,但是在自个写项目时压根历来没注意太小数运算可能出现的问题。写这篇文章但愿之后能牢记于心。json
上面能够看到 并非全部小数运算都会出现精度丢失问题,小数运算为何会出现精度丢失?小程序
上面是小数转二进制规则,对 0.1 作运算以后获得学习
0.000 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 (1100)......
3d
后面 1100
是无限循环的,计算机存储数据会给指定大小,好比 double 类型会给 64 个字节来存储,这就意味着上面那串数字得截取,变成了:code
0.000 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1101
htm
注意看最后四位原本是 1100
,由于截取变成了 1100
。(在线进制转换能够验证结果)blog
运算精度出现问题的根本缘由也就在于此。get