如图所示,由于这是因为在javascript中浮点数的计算是以2进制计算的,故而会出现精度丢失的问题
解决方法,将浮点数变为整数运算后再将小数点前移则可解决此问题
operation(list, pattern = '+') {
if(list.length === 1) return list[0]
if(list.every(item => item === 0)) return 0
let stringList = list.map(item => item.toString())
if(stringList.every(item => item.indexOf('.')==-1)) {
let num = eval(list.join(pattern))
return num
} else {
let m = eval(stringList.map(item => {
return (item.indexOf('.') >= 0 ) ? item.split('.')[1].length : 0
}).join('+'))
let num = eval(stringList.map(item => {
return Number(item.replace('.',''))
}).join(pattern))
return num / Math.pow(10, m);
}
}```