踩坑:js 小数运算出现精度问题

背景

在学习小程序商城源码时发现了这个问题,单价可能出现小数,小数之间运算结果会莫名其妙多出一大串数字,好比下面这样👇。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 1101htm

注意看最后四位原本是 1100,由于截取变成了 1100。(在线进制转换能够验证结果)blog

运算精度出现问题的根本缘由也就在于此。get

相关文章
相关标签/搜索