17 Stimmen

Javascript: Einfacher Weg, Zahlen zu formatieren?

Ich versuche, verschiedene Zahlen auf meiner Seite zu formatieren. Diese Zahlen stellen entweder einen Preis, eine Preisänderung oder einen Prozentsatz dar. Ich weiß, dass Javascript Funktionen hat, um die Anzahl der Dezimalstellen zu begrenzen, aber gibt es irgendeine Unterstützung für andere Arten der Formatierung, wie z. B. die Gruppierung von Zahlen mit Kommas, die Steuerung, ob das +/- angezeigt wird oder nicht, usw.? Hier ist, was ich bis jetzt habe:

var FORMATTER = {
    price       : function(value) { return '$' + value.toFixed(2); },
    pricePer    : function(value) { return (value * 100).toFixed(2) + '%'; },
    priceChg    : function(value) { return (value >= 0 ? '+' : '-') + '$' + Math.abs(value).toFixed(2); }
};

Es funktioniert gut, aber ich möchte Kommas in das 'price'-Formatierer einfügen, und Sie können sehen, dass es einen Hack im 'priceChg'-Formatierer gibt, wo ich versuche, das Vorzeichen vor das '$'-Zeichen zu setzen.

Im Grunde hoffe ich, es gibt einige Bibliothek da draußen (jQuery ist OK), die Javas DecimalFormat-Klasse emuliert.

0 Stimmen

16voto

karim79 Punkte 333786

Es gibt das NUMBERFORMATTER jQuery-Plugin, Details unten:

https://code.google.com/p/jquery-numberformatter/

Aus dem obigen Link:

Dieses Plugin ist ein NumberFormatter Plugin. Die Formatierung von Zahlen ist wahrscheinlich jedem vertraut, der schon einmal mit serverseitigem Code wie Java oder PHP gearbeitet hat und der sich mit Internationalisierung gearbeitet hat.

EDIT: Ich habe den Link durch einen direkteren ersetzt.

0 Stimmen

Sie sollten vielleicht einen Link zu plugins.jquery.com/project/numberformatter stattdessen.

0 Stimmen

Sie haben Recht, vielen Dank dafür. Erledigt.

0 Stimmen

Cool, das ist genau das, wonach ich gesucht habe.

4voto

glomad Punkte 5499

Nein, es gibt keine eingebaute Unterstützung für die Zahlenformatierung, aber wenn Sie googeln, finden Sie jede Menge Codeschnipsel, die dies für Sie erledigen.

EDIT: Ich habe den letzten Satz deines Beitrags übersehen. Versuchen Sie http://code.google.com/p/jquery-utils/wiki/StringFormat für eine jQuery-Lösung.

0 Stimmen

Er fragt nicht nach eingebauter Unterstützung, sondern nach einer Bibliothek.

2 Stimmen

In dem Beitrag heißt es: "Ich weiß, dass Javascript Funktionen hat, um die Anzahl der Dezimalstellen zu begrenzen, aber gibt es irgendeine Unterstützung für andere Arten der Formatierung". Liest sich, als würde er nach eingebauter Unterstützung fragen, wenn man nicht den ganzen Beitrag liest, so wie ich :)

3voto

adamwdraper Punkte 193

Gerade fertig eine js-Bibliothek für die Formatierung von Zahlen Numeral.js . Es verarbeitet Dezimalzahlen, Dollar, Prozentsätze und sogar Zeitformatierung.

0 Stimmen

Danke adamwdraper! Ich brauchte eine Lösung, die nicht mit jQuery.

1voto

peller Punkte 4435

Versuchen Sie auch dojo.nummer die über integrierte Lokalisierungsunterstützung verfügt. Es ist ein viel näheres Analogon zu Javas NumberFormat/DecimalFormat

0voto

Mike Christensen Punkte 82109

Hier ist die YUI-Version, falls jemand interessiert ist:

http://developer.yahoo.com/yui/docs/YAHOO.util.Number.html

var str = YAHOO.util.Number.format(12345, { thousandsSeparator: ',' } );

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X