Javascript ist Toll!

Bibliotheken > FAQ > Javascript

30. August 2005 - 10:12

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:

Beispiel

Zahl:    
Stellen: 
fixieren: 



Ähnliche Artikel

Comments (24)
21669 mal gelesen.

24 Comments

Einen Kommentar hinterlassen »

Kommentare

1 2
21. von Formatierung
Freitag 1.April 2011: 00:17

Ohm mann, ja das Runden ist immer so ein Problem. Man, ich hatte da auch ziemliche Probleme...

22. von Tom
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

23. von christian
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.

24. von Struppi
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:

var zahl = '1000,99';

alert( formatZahl(zahl.replace(/,/, '.'), 2, true));

Aus progammiertechnischer Sicht ist das aber fragwürdig. Im Prinzip sollten Zahlen immer Zahlen sein und Formatierung nur bei der Ausgabe angewandt werdenn.

1 2

Einen Kommentar hinterlassen

Name (erforderlich)
Mail (wird nicht angezeigt) (erforderlich)
Website

Folgende HTML Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Powered by WordPress Stop Spam Harvesters, Join Project Honey Pot kostenloser Counter Browser-Statistiken
rats-wonderful
rats-wonderful
rats-wonderful
rats-wonderful