Zahl zu String
Javascript toFixed () wirkt auf einer Zahl als Eingabe und gibt einen String zurück. Nützlich, wenn als Ergebnis Euro oder andere Währung verlangt ist.
const anum = 10; const ares = anum.toFixed(2); // gibt 10.00 zurück const bnum = 598.2405; const bres = bnum.toFixed(3); // rundet die vierte Stelle ab // und gibt 598.240 zurück
toFixed gibt einen String zurück
Dass toFixed tatsächlich einen String und kein Floating Point liefert, zeigt der typeof-Operator.
const num = 102.50023; const rounded = num.toFixed(2); console.log (`check typeof ${rounded} ${typeof(rounded)}`);
check typeof 102.50 string
Nachkommastellen auffüllen
Wenn mehr Stellen als vorhandene Nachkommastellen gefordert sind (z.B. immer zwei Nachkommastellen), hängt toFixed die gewünschte Zahl von "0" an
console.log ((89).toFixed(2));
liefert
89.00
Was das kaufmännische Runden angeht: Da ist toFixed unzuverlässig. Das kaufmännische Runden nach DIN 1333 (oder Bürgerliches Runden) rundet bei 0,1,2,3 oder 4 ab, bei 5,6,7,8 und 9 auf.
Mit toFixed funktioniert das mal und mal nicht …
console.log ((80.50).toFixed(0)); // 81 – korrekt console.log ((80.50).toFixed()); // 81 – korrekt
aber
mynum = 1.275; console.log ("toFixed " + mynum.toFixed(2)) // sollte 1.28 sein
1.275 hat zwar eine endliche Zahl von Stellen, aber wird periodisch, wenn die Zahl zur Basis 2 konvertiert wird, und kann darum nicht exakt dargestellt werden.
Nur wenn die Programmiersprache eine Langzahlarithmetik-Library (Arbitrary-Precision Arithmetic) nutzt, die Zahlen als Text speichert, würde Runden zuverlässig funktionieren.
Quelle Stackoverflow: Reliable JS rounding numbers with toFixed(2) of a 3 decimal number
toFixed vs Math.round
Math.round(x) – eine andere Funktion zum Runden von Zahlen – erscheint zwar in den meisten Fällen zuverlässiger zu runden, aber rundet ebenfalls nicht zuverlässig kaufmännisch ab oder auf (?).
console.log (Math.round(1.275 * 100 ) / 100); // gibt 1.27 anstelle von 1.28 zurück
Anders als toFixed gibt Math.round keine Zeichenkette, sondern eine Zahl zurück. Nachkommastellen werden durch Teilen und Multiplizieren mit 100, mit 1000 für drei Stellen hinter dem Punkt erzielt.