Fließkommazahlen formatieren
Sebastian
- javascript
0 globe
Hallo zusammen,
ich stehe gerade vor dem Problem, dass ich in JavaScript gerne etwas hätte, was ich in php mit Hilfe von number_format() realisieren kann, nämlich dass die Zahl "1.254,50" auch wirklich so aussieht, auch wenn sie im Hintergrund als "1254.5" fungiert.
Gibt es in JavaScript eine Möglichkeit, Zahlen so zu formatieren?
Vielen Dank für Eure Hilfe und viele Grüße,
Sebastian
n'abend,
Gibt es in JavaScript eine Möglichkeit, Zahlen so zu formatieren?
eine vorgefertigte Funktion gibt es dafür (zumindes laut Number) nicht.
Du solltest dir diese Funktionalität aber mit ein bischen Regular Expressions und String-Funktionen nachbauen können.
weiterhin schönen abend...
Hallo!
Gibt es in JavaScript eine Möglichkeit, Zahlen so zu formatieren?
Du solltest dir diese Funktionalität aber mit ein bischen Regular Expressions und String-Funktionen nachbauen können.
Falls ich es vergessen hatte zu erwähnen: Mit php kenne ich mich besser aus als mit JavScript und deshalb wird mir das Nachbauen nicht gelingen. Zumindest nicht mehr dieses Jahr.
Da ich das ganze aber recht kurzfristig benötige, bin ich für jede Hilfe dankbar!
Vielleicht hat ja jemand Erbarmen?!
Danke & Gruß,
Sebastian
Hallo Sebastian.
Gibt es in JavaScript eine Möglichkeit, Zahlen so zu formatieren?
Du solltest dir diese Funktionalität aber mit ein bischen Regular Expressions und String-Funktionen nachbauen können.
Falls ich es vergessen hatte zu erwähnen: Mit php kenne ich mich besser aus als mit JavScript und deshalb wird mir das Nachbauen nicht gelingen. Zumindest nicht mehr dieses Jahr.
Da ich das ganze aber recht kurzfristig benötige, bin ich für jede Hilfe dankbar!
Hier einmal eine mögliche Implementation:
Number.prototype.toGerman = function() {
if (typeof(Array.prototype.splice) != 'function') { // IE < 5.5
return false;
}
var s = this.toString();
var pos = s.lastIndexOf('.'); // Letzte Position des Punktes suchen
s = s.split(''); // Zeichenkette in Array aufsplitten
s[pos] = ','; // Punkt durch Komma ersetzen
// Ab Position des Kommas Array rückwärts durchlaufen
for (var i = pos; i > -1; --i) {
/* Alle drei Ziffern Tausendertrennzeichen setzen;
* natürlich nicht direkt vor das Komma
*/
if (((i - 1) % 3 == 0) && (i != pos)) {
s.splice(i, 0, '.');
}
}
// Array wieder als Zeichenkette zusammensetzen und zurückgeben
return s.join('');
}
Da diese Methode nun prototypisch an das Number-Objekt gebunden wurde, steht es praktischerweise direkt bei jeder Zahl zur Verfügung:
var a = 1234567.89;
var aS = a.toGerman();
alert(aS); // 1.234.567,89
Einen schönen Sonntag noch.
Gruß, Mathias
Hallo nochmal.
Hier einmal eine mögliche Implementation:
Kleine Korrektur für bessere Performance:
Number.prototype.toGerman = function() {
if (typeof(Array.prototype.splice) != 'function') { // IE < 5.5
return false;
}
var s = new String(this); // Zahl in Zeichenkette umwandeln
var pos = s.lastIndexOf('.'); // Letzte Position des Punktes suchen
s = s.split(''); // Zeichenkette in Array aufsplitten
s[pos] = ','; // Punkt durch Komma ersetzen
// Ab Position des Kommas Array rückwärts durchlaufen
for (var i = pos; i > -1; --i) {
/* Alle drei Ziffern Tausendertrennzeichen setzen;
* natürlich nicht direkt vor das Komma
*/
if (((i - 1) % 3 == 0) && (i != pos)) {
s.splice(i, 0, '.');
}
}
// Array wieder als Zeichenkette zusammensetzen und zurück geben
return s.join('');
}
Hierbei spart man sich durch das explizite Erstellen eines String-Objektes die implizite Umwandlung von Literal zu Objekt bei den Aufrufen von lastIndexOf() und split().
Gruß, Math*genug jetzt*ias
Moin
was genau bewirkt/bezweckt
if (typeof(Array.prototype.splice) != 'function') { // IE < 5.5
return false;
}
?
Gruß
rfb
was genau bewirkt/bezweckt
if (typeof(Array.prototype.splice) != 'function') { // IE < 5.5
return false;
}
> ?
Das prüft ob der Browser die Funktion splice nicht kennt und bricht in dem Falle die Funktion ab.
Struppi.
--
[Javascript ist toll](http://javascript.jstruebig.de/) (Perl auch!)