我在JS中製作了一個litte計算器,計算時有一個奇怪的錯誤。如何修復JavaScript浮點計算?
例如,如果我計算10/3
,則輸出爲3.3333333333333335
。這顯然應3.3333333333333332
下面是代碼
function compute(a, operation, b) {
var x = parseFloat(a);
var y = parseFloat(b);
switch(operation) {
case "+":
return x + y;
break;
case "-":
return x - y;
break;
case "*":
return x * y
break;
case "/":
return x/y
break;
default:
return Number.NaN;
}
}
當我打電話console.log(compute(10, "/", 3));
,我得到這個輸出。
我在SO上發現了一些東西,但是round,toFixed()和東西並沒有爲我做出訣竅。提前致謝。
浮點數不是準確的數字。那麼爲什麼你認爲它應該顯然是** 3.3333333333333332而不是'3.3333333333333335'? –
你爲什麼期望它是'3.3333333333333332'?爲什麼不''3.3333333333333333'? – Cristy
「3.3333333333333335」之後的下一個較小的數字表示爲雙精度浮點,大約爲「3.3333333333333330」。 –