Antwort #223 am: 15. Februar 2016, 18:05:17
Wenn ich richtig informiert bin konvertiert
toFixed() bereits in einen String und somit wäre
toString() überflüssig.
Auch
Math.round() gibt übrigens nicht immer das richtige Ergebnis aus.
Da es sich um Preise zu handeln scheint (kenne die Implementation nicht) und diese im Shop mit vier Stellen hinter dem Komma gespeichert werden, sollte das am sichersten sein:
newPrice = parseFloat(Math.round((summe + data.gprice) + "e+2") + "e-2").replace(/[.]/,',')
- Es wird erst mittels einer Zehnerpotenz (hier 10 hoch 2 = e2 oder e+2) das Komma verschoben
(am Beispiel 0.175: aus 0.175 wird 17.5)
- dann gerundet
(am Beispiel 0.175: aus 17.5 wird 18)
- dann das Komma zurückverschoben mittels negativer Zehnerpotenz (hier Zehn hoch -2 = e-2)
(am Beispiel 0.175: aus 18 wird 0.18)
Mit der Zehnerpotenz, in unserem Beispiel 2, kann man die Stellen hinter dem Komma steuern.
Bei Nutzung von e3 und e-3 hätte man also 3 Stellen hinter dem Komma, wobei,
wenn wir die Zahl 0.175 nehmen dann nicht gerundet würde.
Es würde erst dann gerundet nähmen wir z.B. 0.1755 (denn wir bekämen aus 0.1755 mittels 0.1755e3 175.5 welches mittels
Math.round() auf 176 gerundet und mittels 176e-3 und dem Cast auf eine Kommazahl, nämlich
parseFloat() in 0.176 gewandelt würde.
Ich hoffe das war nicht zu komliziert erklärt
Gruß,
noRiddle
*NACHTRAG*
Mein Vorschlag kann im w3schools-Interface welches
Tomcraft verlinkt hat mit Erfolg
ausprobiert werden.
*NACHTRAG2*
Okay, ich sehe gerade, daß
Tomcraft ja dasselbe macht mittels
/100) * 100, ich Schlafmütze.
Aber:
toFixed(2) ist dann überflüssig,
toString() wegen des anschließenden
replace() allerdings dann nicht.