Javascript 为什么 0.1 + 0.2 != 0.3 如何解决这个问题?
问题
Javascript 为什么 0.1 + 0.2 != 0.3 如何解决这个问题?
答案
因为 JS 采⽤ IEEE 754 双精度版本( 64 位),并且只要采⽤ IEEE 754 的语⾔都有该问题
我们都知道计算机是通过⼆进制来存储东⻄的,那么 0.1 在⼆进制中会表示 为
// (0011) 表示循环
0.1 = 2^-4 * 1.10011(0011)
我们可以发现, 0.1 在⼆进制中是⽆限循环的⼀些数字,其实不只是 0.1 ,其实很多⼗进制⼩数⽤⼆进制表示都是⽆限循环的。这样其实没什么 问题,但是 JS 采⽤的浮点数标准却会裁剪掉我们的数字。
解决1
parseFloat((0.1 + 0.2).toFixed(10)) === 0.3 // true
解决2
bignumber 库
解决3 bigint类型
更多面试题
如果你想了解更多的前端面试题,可以查看本站的WEB前端面试题 ,这里基本包涵了市场上的所有前端方面的面试题,也有一些大公司的面试图,可以让你面试更加顺利。
面试题 | ||
---|---|---|
HTML | CSS | JavaScript |
jQuery | Vue.js | React |
算法 | HTTP | Babel |
BootStrap | Electron | Gulp |
Node.js | 前端经验相关 | 前端综合 |
Webpack | 微信小程序 | - |
这些题库还在更新中,如果你有不错的面试题库欢迎分享给我,我整理后放上来;人人为我,我为人人,互帮互助,共同提高,祝大家都拿到心仪的Offer!