看到这到题的人,很大程度会说成立!但是对于老技术来说,都会遇到这个问题,js在进行计算时,会先进行进制转换,最后进行对阶运算,最后会导致精度丢失

面试题七: 0.1 + 0.2 === 0.3 是否成立?为什么?-Qui-Note

例如:

0.1+0.2 = 0.30000000000000004

什么?不要质疑,0.1+0.2简单的加法运算,被js先进行二进制转换,这个过程中精度已经丢失了
0.1 -> 0.0001100110011001...(无限循环)
0.2 -> 0.0011001100110011...(无限循环)

然后再进行二进制加法——精度丢失更加严重:
0.0100110011001100110011001100110011001100110011001100 

最后转为十进制:

0.30000000000000004

所以,等式不成立的,js不能用来做精准的运算!对,就是这样绝对!!!

那么如何做精准的js运算?
第三方插件库:
Math.js  —— mathjs.org
big.js   —— mikemcl.github.io/big.js