Zahlen formatieren
Die folgende Funktion formatiert Zahlen.
javascript
function formatZahl(zahl, k, fix) { |
if(!k) k = 0; |
var neu = ''; |
var dec_point = '.'; |
var thousands_sep = ','; |
// Runden |
var f = Math.pow(10, k); |
zahl = '' + parseInt(zahl * f + (.5 * (zahl > 0 ? 1 : -1)) ) / f ; |
// Komma ermittlen |
var idx = zahl.indexOf('.'); |
// fehlende Nullen einfügen |
if(fix) { |
zahl += (idx == -1 ? '.' : '' ) |
+ f.toString().substring(1); |
} |
var sign = zahl < 0; |
if(sign) zahl = zahl.substring(1); |
idx = zahl.indexOf('.'); |
// Nachkommastellen ermittlen |
if( idx == -1) idx = zahl.length; |
else neu = dec_point + zahl.substr(idx + 1, k); |
while(idx > 0) { |
if(idx - 3 > 0) |
neu = thousands_sep + zahl.substring( idx - 3, idx) + neu; |
else |
neu = zahl.substring(0, idx) + neu; |
idx -= 3; |
} |
return (sign ? '-' : '') + neu; |
} |
Erläuterung
formatZahl() erwartet bis zu drei Parameter mit folgender Bedeutung:
number
Die Zahl, die formatiert werden sollnumber(optional)
Die Anzahl der Nachkommastellen auf die die Zahl gerundet werden soll (default: 0)bool(optional)
Dieser Parameter bestimmt, ob die formatierte Zahl eine feste Anzahl von Nachkommastellen haben soll. Ist der Werttrue, dann werden evtl. fehlende Stellen mit einer Null aufgeüllt.
Beispiel
Ähnliche Artikel
Comments (24)
21669 mal gelesen.
21669 mal gelesen.


24 Comments
Einen Kommentar hinterlassen »
Kommentare
« Zurück 1 2-
21.
von Formatierung
-
-
22.
von Tom
-
-
23.
von christian
-
-
24.
von Struppi
-
« Zurück 1 2Freitag 1.April 2011: 00:17
Ohm mann, ja das Runden ist immer so ein Problem. Man, ich hatte da auch ziemliche Probleme...
Donnerstag 11.August 2011: 01:18
Ich bin ABSOLUTER JavaScript Anfänger (seit 2 Tagen
) und selbst bei mir funktioniert die Funktion auf Anhieb! - PERFEKT ... vielen Dank.
Gruß
Thom
Dienstag 15.November 2011: 16:58
Cooles Skript, aber auch hier wird ein zweiter Durchlauf mit einer Kommazahl mit "NaN" quittiert. Wie kann ich dem Skript denn beibringen, als Dezimaltrenner das Komma zu akzeptieren?
Wenn ich richtig verstehe, wird die Zeile
'var dec_point = ',';'
ja nur beim Zusammenbauen des Strings für die Ausgabe genutzt...
Beim Eingang der Funktion müßte man doch nur prüfen, ob der Eingabewert (als String) ein Komma enthält, dieses dann durch einen Punkt ersetzen, die Funktion rechnen (runden) lassen und das Ergebnis wieder von Punkt auf Komma umformatieren. "Nur".
Wenn ich's könnte, würde ichs tun, JavaScript liegt mir aber nicht.
Dienstag 15.November 2011: 17:41
Interessanter und begründeter Einwurf. Ich guck mal, ob ich eine Lokalisierung konsequenter einbaue.
Du kannst dir aber vorläufig damit behelfen:
Aus progammiertechnischer Sicht ist das aber fragwürdig. Im Prinzip sollten Zahlen immer Zahlen sein und Formatierung nur bei der Ausgabe angewandt werdenn.
Einen Kommentar hinterlassen