Hi,
ich habe eine Funktion die Zahlen mit Tausendertrennzeichen und bei Bedarf mit der gewünschten Anzahl an Dezimalstellen versieht:
Das ganze funktioniert bei positiven Zahlen. Bei negativen Zahlen wird jedoch kein Tausendertrennzeichen eingefügt...kann mir jemand helfen?
ich habe eine Funktion die Zahlen mit Tausendertrennzeichen und bei Bedarf mit der gewünschten Anzahl an Dezimalstellen versieht:
Code:
function formatNumber(strZahl, intDezStellen){
// Variablen vorbelegen
strDelimiter = (typeof(strDelimiter)=="undefined") ? "." : strDelimiter;
intDezStellen = (typeof(intDezStellen)=="undefined") ? 2 : intDezStellen;
// Tausendertrennzeichen eventuell maskieren
var strDelimiterMask = (strDelimiter.match(/(\.|\+|\*|\?|\^|\(|\)|\$)/))?"\\"+strDelimiter:strDelimiter;
// Falls ein Komma oder Punkt am Ende existiert
if(strZahl.match(/^(.*)(,|\.)(\d+)$/)){
// Durch Punkt ersetzen
strZahl = strZahl.replace(/^(.*)(,|\.)(\d+)$/, RegExp.$1+"."+RegExp.$3);
}
// Zahl in Dezimal- und Ganzzahlanteil splitten
var strFirst = strZahl.substring(0, strZahl.length-RegExp.$3.length-1);
var strSecond = strZahl.substring(strZahl.length-RegExp.$3.length-1, strZahl.length);
// Suchmaske für Tausendertrennzeichen
strPattern = eval("/(,|"+strDelimiterMask+")/");
// Solange im Ganzzahlanteil Punkte oder Kommata gefunden werden
while(strFirst.match(strPattern)){
// Punkte entfernen
strFirst = strFirst.replace(strPattern, "");
}
// Ganz- und Dezimalanteil wieder zusammenführen
strZahl = strFirst + strSecond;
// Mögliche Dezimalstellen auf 2 Stellen runden und Dez-Punkt durch Komma ersetzen
strZahl = String(Number(strZahl).toFixed(intDezStellen)).replace(/\./,",");
// Solange noch mindestens vier Ziffern am Anfang gefunden werden
while(strZahl.match(/^(\d+)(\d{3}\b)/)){
// Tausendertrennzeichen einfügen
strZahl = strZahl.replace(/^(\d+)(\d{3}\b)/, RegExp.$1 + strDelimiter + RegExp.$2);
}
return(strZahl);
}
Das ganze funktioniert bei positiven Zahlen. Bei negativen Zahlen wird jedoch kein Tausendertrennzeichen eingefügt...kann mir jemand helfen?