前两天面试讨论到浮点数计算,面试官说用乘除1000可以彻底解决出现多个小数问题,我说不能完全解决,面试官说能完全解决说我应该写错了,想反驳有没有具体论点,只知道是浮点运算的bug,这是因为Javascript的数字类型是以64位的IEEE 754格式存储的。
1.当一个1位小数或者2位小数连续加上一个2位小数时候
实验:
let num=1.6;//一位小数
let index=0
setInterval(()=>{
num=(num*1000+20.4*1000)/1000
index+=1
console.log(num,index)
},100)
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
},
})
当重复到202次会出现一次多位小数(根据小数位奇偶性可能101次时候就回出现)