3 回答
TA贡献1817条经验 获得超14个赞
我多次运行你的代码,它没有问题。我刚刚发现'0.3'你发布的那个,它有一个特殊的字符,看起来像3但它不是3。所以,当你想在 JS 上运行它时,它会显示一个错误。所以你的解决方案是正确的。检查这里。
function calc(firstNumber, secondNumber, operation, resultInput) {
let a = parseFloat(firstNumber);
let b = parseFloat(secondNumber);
let aux = parseFloat(resultInput);
let r;
switch (operation) {
case '+':
r = a + b;
break;
case '-':
r = a - b;
break;
case '*':
r = a * b;
break;
case '/':
if (b !== 0) {
r = a / b;
} else {
r = 0;
}
break;
default:
console.log(`Sorry, wrong operator: ${operation}.`);
}
return (+r.toFixed(1)) === (+aux.toFixed(1));
}
console.log(calc('0.1', '0.2', '+', '0.3'));
TA贡献1836条经验 获得超3个赞
您可以创建一个函数来测试两个数字是否足够接近以被称为相等,而不是来回转换为/从字符串。你决定一些小的增量,如果数字至少接近,你称之为好。
function almost(a, b, delta = 0.000001){
return Math.abs(a - b) < delta
}
// not really equal
console.log("equal?", 0.2 + 0.1 === 0.3)
// but good enough
console.log("close enough?", almost(0.2 + 0.1, 0.3))
添加回答
举报