2017-01-29 2 views
0

ich viele Dinge ausprobiert, bin aber ich habe immer noch ein Problem, Beispiel: 4,3725 * 350 = 1.530,38 aber mein Ergebnis ist 1530,37;/JavaScript Rund Fehler toFixed, NumberPrototypeRound

Ich habe versucht, dieses:

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

und toFixed.

+0

Sie für die Arithmetik nie String-Verkettung verwenden . Dies funktioniert nicht mit allen Nummern. – Bergi

Antwort

0

Sie könnten toPrecision() verwenden. Dies gibt eine Zeichenfolge zurück, die Sie einfach zurück in eine Zahl und eine Runde konvertieren können.
Das Problem wurde toFixed() Runden Zahlen wie folgt aus: 3.65.toFixed (1) => 3.6
Math.round(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
Hier ein Beispiel:

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! Das ist meine Seele! Vielen Dank!!! Ich habe versucht, dieses Problem um 3 Stunden zu lösen. Vielen Dank! – Alterwar

+0

Ok, ich habe ein Problem. Wenn Nummer 4.2970 * 535 = 2298,90. Aber mein Ergebnis ist 2298,895 ~ 2298,89. Wo ist das Problem? – Alterwar

+0

Ich aktualisierte meine Antwort, die Funktion sollte jetzt für Zahlen, die mit .5 enden – darron614