js浮点运算0.1+0.2 = 0.30000000000000004

131 阅读1分钟

js浮点运算0.1+0.2 == 0.30000000000000004

由于JavaScript的Number类型为双精度IEEE 754 64位浮点类型。计算的时候会将超出精度部分进行"零舍一入"。导致 0.1+0.2 = 0.30000000000000004,其他采用IEEE 754标准的语言也有误差,可以去这个网站上查看0.30000000000000004.com/

解决方案

可以用第三方库来解决,或者如果是一位小数x10后再运算后再除以10

decimal.js

let x = new Decimal(0.1)
x = x.plus(0.2)               // '0.3'

demo

github.com/MikeMcl/dec…

mathjs

let x = math.format(0.1+0.2, {notation: 'fixed', precision: 1})               // '0.3'
// precision 保留几位小数

demo

github.com/josdejong/m…

参考

IEEE 754标准 developer.mozilla.org/zh-CN/docs/…

我的博客和GitHub地址

github.com/lanpangzhi

blog.langpz.com