IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[JDK6] Formattage en monétaire


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Par défaut [JDK6] Formattage en monétaire
    Salut,

    Je veux formatter mes chaines qui correspondent à des montants en euros, provenant du base de données.
    exemple :
    52.4 -> 52,40
    1524.6 -> 1 524,60
    541215.657 -> 541 215,66
    Pour réaliser ça, j'utilise ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public static String formatMoneyValue(String value)
    	{
    		String formatValue=null;
    		DecimalFormatSymbols FR_FMT_SYMBOLS = new DecimalFormatSymbols(Locale.FRANCE);
    		DecimalFormat MONEY_FORMATTER = new DecimalFormat("#,##0.00",FR_FMT_SYMBOLS);
    		try
    		{
    			value=value.replace(',', '.');
    			formatValue=MONEY_FORMATTER.format(Double.valueOf(value));
    		}
    		catch(NumberFormatException exc)
    		{
    			formatValue=null;
    		}
    		catch(IllegalArgumentException exc)
    		{
    			formatValue=null;
    		}
    		return formatValue;
    	}
    Tout marche bien mais si vous avez un code mieux je suis preneur ..

    Et voici mon problème en test unitaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void testFormatMoneyValue3()
    	{
    		String value="5452.256";
    		System.out.println("v="+StringUtil.formatMoneyValue(value));
    		Assert.assertEquals("5 452,26", StringUtil.formatMoneyValue(value));
    	}
    Mon test est toujours FAUX alors que l'affichage de la variable v=5 452,26.
    je ne comprends pas pourquoi ???
    tout aide, conseils sont les bienvenus...

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par valkeke Voir le message
    Tout marche bien mais si vous avez un code mieux je suis preneur ..
    Deux remarques :
    • Les catch(Exception) qui retourne une valeur null c'est affreux !
      C'est le meilleur moyen pour faire planter l'application sans qu'on comprenne pourquoi. Autant remonter directement une exception.
    • Les montants que tu récupères depuis la BD sont sous forme de String ???
      Ils sont réellement sous forme de chaine de caractères dans la base ?



    Citation Envoyé par valkeke Voir le message
    Mon test est toujours FAUX alors que l'affichage de la variable v=5 452,26.
    je ne comprends pas pourquoi ???
    En français les chiffres sont séparé par un "espace insécable" (code unicode \u00a0) et non pas par un simple espace...

    a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Par défaut
    Merci pour la réponse SUPER rapide le problème était peut-être trivial !
    Je suis d'accord avec toi, c'est juste une méthode de test que je vais améliorer à ce niveau avant de la livrer dans mon code final.
    Les catch(Exception) qui retourne une valeur null c'est affreux !
    C'est le meilleur moyen pour faire planter l'application sans qu'on comprenne pourquoi. Autant remonter directement une exception.
    Oui, les services me retournent les montants sous forme de String. Ces services me sont fournis et je n'ai pas la main dessus, donc je fais avec....

Discussions similaires

  1. Mise en forme monétaire d'une valeur
    Par RobertDeNiroZ dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/08/2005, 09h55
  2. Changer formattage
    Par leminipouce dans le forum Administration système
    Réponses: 4
    Dernier message: 20/06/2005, 15h36
  3. [CR8.5] Pb de formattage de date
    Par nnj dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 10/11/2004, 12h21
  4. [Date] Conversion en millisecondes et formattage
    Par olivangel dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 30/09/2004, 10h49
  5. Format monétaire dans un DBedit
    Par cdlr27 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/04/2004, 16h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo