it-swarm.com.de

Javascript: Einfachere Art, Zahlen zu formatieren?

Ich versuche, verschiedene Zahlen auf meiner Seite zu formatieren. Diese Zahlen repräsentieren entweder einen Preis, eine Preisänderung oder einen Prozentsatz. Ich weiß, dass Javascript über Funktionen verfügt, um die Anzahl der Dezimalstellen zu begrenzen, aber werden andere Formatierungsarten unterstützt, z. B. das Gruppieren von Zahlen mit Kommas, Steuern, ob der Wert +/- angezeigt wird oder nicht, usw.? Folgendes habe ich bisher:

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 OK, aber ich möchte dem 'price'-Formatierer Kommas hinzufügen, und Sie können sehen, dass es einen Hack im' priceChg'-Format gibt, bei dem ich versuche, das +/- Zeichen vor dem '$' zu verschieben. Zeichen.

Im Grunde hoffe ich, dass es eine Bibliothek gibt (jQuery ist OK), die die DecimalFormat-Klasse von Java emuliert.

17

Es gibt das NUMBERFORMATTER-Plugin jQuery, Details unten:

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

Über den obigen Link:

Dieses Plugin ist ein NumberFormatter Plugin. Zahlenformatierung ist wahrscheinlich Jedem, der mit .__ gearbeitet hat, vertraut sein. serverseitiger Code wie Java oder PHP und Wer hat mit .__ gearbeitet. Internationalisierung.

BEARBEITEN: Der Link wurde durch einen direkteren Link ersetzt.

16
karim79

Nein, es gibt keine integrierte Unterstützung für die Zahlenformatierung, aber beim Googeln werden zahlreiche Codeausschnitte angezeigt, die dies für Sie tun.

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

4
glomad

Ich habe gerade eine js-Bibliothek zum Formatieren von Zahlen Numeral.js fertiggestellt. Es verarbeitet Dezimalzahlen, Dollar, Prozentsätze und sogar Zeitformatierungen.

3
adamwdraper

Versuchen Sie auch dojo.number , das eine integrierte Unterstützung für die Lokalisierung enthält. Es ist ein viel näheres Analogon zu Javas NumberFormat/DecimalFormat

1
peller

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

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

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