Javascript aufrunden auf 2 Nachkommastellen?
zb.
var x = 0.1;
var y = 7.49;
alert(x * y );
und als ergebnis kommt dann 0.7490000000000001
statt einfach 0.74 oder 0,749.
Mit Math.round() rundet das nur auf ganze zahlen wie 1,2,3
nicht auf 2,45 statt 2,4000000000242424242415423553252
3 Antworten
Bei Math.round() fallen, wie du richtig bemerkt hast, die Nachkommastellen weg.
Wenn du die Zahl aber vorher mit 100 multiplizierst, dann bleiben die ersten zwei Nachkommastellen erhalten. Und anschließend kannst du sie wieder durch 100 teilen, damit das Komma wieder am richtigen Platz ist.
Math.round(x*y*100)/100
const x = 0.1;
const y = 7.49;
alert( Math.round(x*y*100)/100 );
Eine noch einfachere Methode wäre, .toFixed() zu benutzen:
alert( (x*y).toFixed(2) );
Müsste es nicht eigentlich gehen, die Zahl mit 100 zu multiplizieren, dann zu runden und danach wieder durch 100 zu teilen?
also alert(Math.round(x * y)* 100 / 100); oder wie ?
Nein, Math.round(100 * x * y)/100. Durch die Multiplikation verschiebst du die Stellen einfach nur so, dass im Endeffekt auf 2 Nachkommastellen gerundet wird.
Vernünftige Round-Funktionen bieten aber eigentlich auch einen zweiten optionalen Parameter an, mit dem man die Nachkommastellen festlegen kann.
Ich verstehe nicht ganz.
0.1*7.49
auf 0.74 zu runden wäre falsch, 0.749 sind keine zwei NKSt.
Am Schluss ist 2.45 etwas komplett anderes als 2.40000....
dann 0.75, war ein schnelles beispiel.
es geht mir eigentlich nur darum das da nichtmehr unendlich zeichen ausgegeben werden sondern das nach 2 nachkommastellen oder 3 schluss ist.
Einfach eiskalt meine Antwort geklaut D: