js浮点运算0.1+0.2 == 0.30000000000000004
由于JavaScript的Number类型为双精度IEEE 754 64位浮点类型。计算的时候会将超出精度部分进行”零舍一入”。导致 0.1+0.2 = 0.30000000000000004,其他采用IEEE 754标准的语言也有误差,可以去这个网站上查看https://0.30000000000000004.com/。
解决方案
可以用第三方库来解决,或者如果是一位小数x10后再运算后再除以10
decimal.js
1 | let x = new Decimal(0.1) |
demo
https://github.com/MikeMcl/decimal.js
mathjs
1 | let x = math.format(0.1+0.2, {notation: 'fixed', precision: 1}) // '0.3' |
demo
https://github.com/josdejong/mathjs
参考
IEEE 754标准
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number