2017-01-29 11 views
0

私は多くのことをしようとしたんだけど、私はまだ問題を抱えている、 例:* 350 4.3725 = 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

私の答えが更新されました。関数は今度は. – darron614

関連する問題