Comment formatter un nombre avec GWT
Publié le 6 Juin 2011
Je dois calculer et afficher des valeurs dans une application GWT. Le soucis concerne le formattage des nombres car une fois le calcul effectué, l'affichage des valeurs n'est pas très "user friendly": genre 1.347002890098%.
J'aurais préférer un simple 1.35% par exemple.
Et bien heureusement on peut obtenir facilement ce résultat sans se prendre la tête avec les arrondis et autres, en utilisant simplement la class NumberFormat qui est justement faite pour ça.
Dans la pratique ça donne:
double value = 12.3456789;
NumberFormat format = NumberFormat.getFormat("0.00");
Window.alert(format.format(value)+"%"); // affiche 12.35%
On peut également préciser le signe % dans le format mais ceci a pour effet de multiplier la valeur par 100:
double value = 0.123456789;
Number format format = NumberFormat.getFormat("0.00%");
Window.alert(format.format(value)); // affiche 12.35%
On n'est pas toujours obligé de spécifier un format. On peut utiliser les formats prédéfinis qui tiennent compte des locales.
Attention donc pour l'affichage monétaire si l'utilisateur utilise une locale différente.
double value = 12345.6789;
Number format format = NumberFormat.getDecimalFormat();
Window.alert(format.format(value)); // affiche 12 345.6789
double value = 12345.6789;
Number format format = NumberFormat.getCurrencyFormat();
Window.alert(format.format(value)); // affiche 12 345.68€
etc ...
Le javadoc de la classe NumberFormat est disponible ici: http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/i18n/client/NumberFormat.html