web-dev-qa-db-fra.com

Javascript: un moyen plus simple de formater des nombres?

J'essaie de formater divers nombres sur ma page. Ces chiffres représentent un prix, une variation de prix ou un pourcentage. Je sais que Javascript possède des fonctions permettant de limiter le nombre de décimales, mais existe-t-il un support pour d’autres types de formatage, tels que le regroupement de nombres avec des virgules, le contrôle de l’affichage du +/-, etc.? Voici ce que j'ai jusqu'à présent:

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); }
};

Cela fonctionne bien, mais il aimerait ajouter des virgules au formateur "price", et vous pouvez voir qu'il y a un hack dans le formateur "priceChg" où j'essaie de déplacer le signe +/- devant le symbole "$". signe.

En gros, j'espère qu'il existe une bibliothèque (jQuery est OK) qui émule la classe DecimalFormat de Java.

17

Il y a le plugin NUMBERFORMATTER jQuery, détails ci-dessous:

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

À partir du lien ci-dessus:

Ce plugin est un NumberFormatter brancher. Le formatage numérique est probable familier à quiconque a travaillé avec code côté serveur comme Java ou PHP et qui a travaillé avec internationalisation.

EDIT: Remplacé le lien par un lien plus direct.

16
karim79

Non, il n'y a pas de support intégré pour le formatage des nombres, mais googler générera de nombreux extraits de code qui le feront pour vous.

EDIT: J'ai raté la dernière phrase de votre message. Essayez http://code.google.com/p/jquery-utils/wiki/StringFormat pour une solution jQuery.

4
glomad

Je viens de terminer une bibliothèque js pour formater des nombres Numeral.js . Il gère les nombres décimaux, les dollars, les pourcentages et même le formatage du temps.

3
adamwdraper

Essayez également dojo.number qui prend en charge la localisation intégrée. C'est un analogue beaucoup plus proche du NumberFormat/DecimalFormat de Java.

1
peller

Voici la version de YUI si quelqu'un est intéressé:

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

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