2017-01-29 46 views
0

我嘗試了很多東西,但我仍然有一個問題, 例如:4.3725 * 350 = 1530.38,但我的結果是1530.37;/JavaScript的圓誤差ToFixed,NumberPrototypeRound

我嘗試這樣做:

Number.prototype.round = function(places) { 
    return +(Math.round(this + "e+" + places) + "e-" + places); 
} 

和toFixed。

+0

不要從不使用字符串連接用於算術。這不適用於所有數字。 – Bergi

回答

0

你可以使用toPrecision()。這將返回一個字符串,您可以將其轉換回數字。
的問題已得到解決toFixed()輪號碼那樣:3.65.toFixed(1)=> 3.6
Math.round():https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
這裏的示例:

function roundTo(number, digits) { 
     var roundHelp = Math.pow(10, digits); // needed to round to correct number of decimals 
     number = Number(number.toPrecision(15)); 
     return Math.round(number * roundHelp)/roundHelp; 
     // if you want the exact number of digits use this return statement: 
     // return (Math.round(number * roundHelp)/roundHelp).toFixed(digits); 
    } 
    var x = roundTo(4.3725 * 350, 2); // x = 1530.38 
    var y = roundTo(4.2970 * 535, 2); // y = 2298.9 
+0

Woooow!這是我的靈魂!謝謝!!!我試了3個小時解決了這個問題。謝謝! – Alterwar

+0

好的,我有一個問題。如果數字4.2970 * 535 = 2298,90。但是我的結果是2298,895〜2298,89。哪裏有問題? – Alterwar

+0

我更新了我的答案,現在函數應該以.5 – darron614