javascript - 为什么这个简单的比较在 JavaScript 中不能正常工作?

标签 javascript arrays

我正在开发一个电子学习项目,我需要一个简单的验证函数,它接受 3 个数组,并在第三个数组中的每个元素等于第一个数组对应元素乘以第二个数组元素时返回 true .

这 3 个数组的长度相同。

示例:

verifyNotes([5], [2], [11])
//should return false because 5*2=10
verifyNotes([5], [2], [10])
//should return true

这是我创建的函数(我认为没有什么特别的):

function verifyNotes(coefficients, notes, savedResults){
	var resultVerif=true;
	savedResults.forEach(function(element, i){
		if( (coefficients[i]*notes[i]) !== savedResults[i] ){
			resultVerif=false;
		}
	});
	return resultVerif;
}

var verif1 = verifyNotes([1,4,2], [12,16,8], [12,64,16]);
console.info("Verif1: Are notes okay?", verif1);

问题

当我有 float 音符时,该函数在本示例中应该返回 true 时返回 false(因为 1.5*15.66=23.49):

var verif2 = verifyNotes([1,4,2,1.5], [12,16,8,15.66], [12,64,16,23.49]);
console.info("Verif2: Are notes okay?", verif2);
//ouputs: Verif2: Are notes okay? false

出了什么问题?

最佳答案

这是一个舍入错误。您可能需要将数字四舍五入为固定位数,如下所示:

parseFloat((your_number).toFixed(2));

具体来说,在 if( parseFloat((coefficients[i]*notes[i]).toFixed(2))

关于javascript - 为什么这个简单的比较在 JavaScript 中不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42091215/

相关文章:

javascript - Apache : CORS header 'Access-Control-Allow-Origin' missing

javascript - 将 "play"按钮添加到 tosRus 灯箱弹出窗口

java - 拆分字符串数组导致数组索引超出范围

javascript - 将 chrome webrequest 的 addeventlistener 限制到当前选项卡或扩展程序的主窗口

javascript - 函数名中的数组

javascript - 数组中最高和最低的问题

python - 删除直线中多余的点

PHP:我可以在 array_map 函数中获取索引吗?

c - strcmp() 用于文件中的行

javascript - 如何使用 for (let obj of objects) 获取数组中的下一项