Publié le 01/06/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Formater un nombre avec NumberFormat

En java, la class NumberFormat contient toutes les fonctions pour formater un nombre en tenant compte des spécificités du pays. Par exemple, dans les pays anglosaxons le séparateur entre l'entier et la décimale est le point, dans les autres pays européens, le séparateur est la virgule.

Convertir un nombre en string avec NumberFormat

Les fonctions disponibles dans la class NumberFormat permettent aussi bien de d'arrondir au centime un double,
d'afficher le symbole de la monnaie, d'utiliser un séparateur de millier ou encore d'obtenir un nombre à taille fixe en ajoutant des 0.

Afficher un double avec une vigule

Lorsqu'une application est développée, on ne connait pas toujours à l'avance le pays dans lequel le programme va s'executer. Dans ce cas, NumberFormat permet de s'adapter aux usages du pays, par exemple séparer le nombre avec une virgule.

import java.text.NumberFormat;
import java.util.Currency;
 
/**
 * Formater un nombre avec NumberFormat
 * http://www.fobec.com/java/915/formater-nombre-avec-numberformat.html
 * @author fobec 2010
 */
public class FormatFr {
 
    public static void main(String[] args) {
        double soldeBancaire = 56789.12;
        NumberFormat numberFormat = NumberFormat.getInstance(java.util.Locale.FRENCH);
 
        /**
         * Afficher avec le regles du pays
         */
        System.out.println(numberFormat.format(soldeBancaire));
        //resultat: 56 789,12   
    }
}

Arrondir un nombre

Lorsque l'on souhaite arrondir un nombre, DecimalFormat permet de fixer le nombre de décimal à utiliser et la règle pour arrondir le nombre. Le script ci-dessous arrondit le nombre à l'entier le plus proche en arrondissant le nombre vers le bas.

import java.math.RoundingMode;
import java.text.NumberFormat;
 
/**
 * Formater un nombre avec NumberFormat
 * http://www.fobec.com/java/915/formater-nombre-avec-numberformat.html
 * @author fobec 2010
 */
public class FormatFr {
 
    public static void main(String[] args) {
        double soldeBancaire = 789.12;
        NumberFormat numberFormat = NumberFormat.getInstance(java.util.Locale.FRENCH);
 
        numberFormat.setRoundingMode(RoundingMode.HALF_DOWN);
        numberFormat.setMinimumFractionDigits(0);
        numberFormat.setMaximumFractionDigits(0);
        System.out.println(numberFormat.format(soldeBancaire));
        //Résultat 789
 
    }
}

Former un nombre à taille fixe

Pour afficher un nombre à taille fixe, on peut également utiliser NumberFormat. Dans l'exemple, la fonction fixe à 7 chiffres les entiers, c-a-d si la partie entière est inférieur à 1 000 000, Numberformat ajoute des 0.

import java.math.RoundingMode;
import java.text.NumberFormat;
 
/**
 * Formater un nombre avec NumberFormat
 * http://www.fobec.com/java/915/formater-nombre-avec-numberformat.html
 * @author fobec 2010
 */
public class FormatFr {
 
    public static void main(String[] args) {
        double soldeBancaire = 789.12;
        NumberFormat numberFormat = NumberFormat.getInstance(java.util.Locale.FRENCH);
 
        numberFormat.setRoundingMode(RoundingMode.HALF_DOWN);
        numberFormat.setMinimumIntegerDigits(7);
        numberFormat.setMaximumIntegerDigits(7);
        System.out.println(numberFormat.format(soldeBancaire));
        //Résultat 0 000 789,12
 
    }
}

Bref pour s'adapter aux usages dans un pays, le class NumberFormat est faite pour cela, que ce soit pour afficher un arrondi, faire le choix entre point et virgule ou encore pour formater une somme avec la devise du pays.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
01/06/2010
Visualisation
vu 8815 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par tactictoe dans CMS

Erreur ligne 8 et 26:
Lire : Reg.OpenKey('\Software\Microsoft\Internet Explorer\Main\', false);
et non pas Reg.OpenKey('SoftwareMicrosoftInternet ExplorerMain', false);

Publié par xnadyx dans php5

Bonjour,

Est ce qu'il y a un autre moyen d'acces aux donnees Microsoft SQL Server?
Je ne trouve pas de tutoriaux sur Internet.

Merci.

Publié par Christof dans CMS

Je pense qu'il y a un problème au niveau de l'affectation du longint "Color" dans la
variable de type byte "r". A mon avis, cela risque de provoquer une erreur de
vérifi...

Publié par eldiablo dans java

Malheureusement, ce code n'est pas correct.
Cette classe accepte des dates comme : "31/00/2011"

Publié par bob le poisson dans java

Bonjour, votre script est tres bien mais attention l'utilisation du mot cle static sur la methode scale(BufferedImage bImage, double factor) est inutile et empeche de liberer la ressource.