Afficher un double avec 0 (s'il est entier) ou 2 décimales
Résolu
sylent84
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je souhaiterai afficher des nombres de type 'Double' avec :
- 0 décimales s'il est égal à un entier (exemples: 200/200.0/200.00/...)
- 2 décimales s'il est différent d'un nombre entier (exemple : 200.3 donne 200.30)
J'ai bien fait un DoubleConverter avec un DecimalFormat :
Mais je voudrais que, si l'utilisateur saisi un chiffre avec une seule décimale, qu'il m'en affiche 2 par exemple :
-saisie de 200.30 cela m'affiche 200,3 alors que je voudrais 200,30
-saisie de 200.3 cela m'affiche 200,3 alors que je voudrais 200,30
Merci d'avance pour tous vos conseils.
Je souhaiterai afficher des nombres de type 'Double' avec :
- 0 décimales s'il est égal à un entier (exemples: 200/200.0/200.00/...)
- 2 décimales s'il est différent d'un nombre entier (exemple : 200.3 donne 200.30)
J'ai bien fait un DoubleConverter avec un DecimalFormat :
final DecimalFormat decimalFormat = new DecimalFormat(); final DecimalFormatSymbols s = decimalFormat.getDecimalFormatSymbols(); s.setGroupingSeparator(' '); s.setDecimalSeparator(','); decimalFormat.setMinimumFractionDigits(0); decimalFormat.setMaximumFractionDigits(2); decimalFormat.setDecimalFormatSymbols(s); return decimalFormat.format(value);
Mais je voudrais que, si l'utilisateur saisi un chiffre avec une seule décimale, qu'il m'en affiche 2 par exemple :
-saisie de 200.30 cela m'affiche 200,3 alors que je voudrais 200,30
-saisie de 200.3 cela m'affiche 200,3 alors que je voudrais 200,30
Merci d'avance pour tous vos conseils.
A voir également:
- Afficher un double en c
- Double ecran - Guide
- Whatsapp double sim - Guide
- Double driver - Télécharger - Pilotes & Matériel
- Double appel - Guide
- Afficher appdata - Guide
3 réponses
Bonjour,
Tu peux convertir ton double en String, puis dans un try/ catch faire un parseInt de ta String.
Passer dans le catch
<=> ta chaîne t'es pas un int
<=> ta chaîne peut-être un double
Pour choisir le nombre de chiffres après la virgule, si je me rapelle bien,
les doubles ont la méthode
Tu peux convertir ton double en String, puis dans un try/ catch faire un parseInt de ta String.
Passer dans le catch
<=> ta chaîne t'es pas un int
<=> ta chaîne peut-être un double
Pour choisir le nombre de chiffres après la virgule, si je me rapelle bien,
les doubles ont la méthode
setMaximumFractionDigits(int nb_chiffre_apres_la_vigule);
Merci de ta réponse mais je viens de trouver quelques secondes avant en fait :
final DecimalFormat decimalFormat = new DecimalFormat(); final DecimalFormatSymbols s = decimalFormat.getDecimalFormatSymbols(); s.setGroupingSeparator(' '); s.setDecimalSeparator(','); decimalFormat.setMinimumFractionDigits(0); decimalFormat.setMaximumFractionDigits(2); decimalFormat.setDecimalFormatSymbols(s); String nombre=decimalFormat.format(value); if(nombre.indexOf(",")!=-1 && nombre.length()==nombre.indexOf(",")+2){ return nombre.concat("0"); }else{ return nombre; }
Il y a encore plus simple :
System.out.printf("%.2f",200.3); // 200.30Ou en version String :
String str = String.format("%.2f",200.3); // 200.30
Au temps pour moi, j'avais mal compris, cependant ça pourras toujours être utile de savoir que ça existe, c'est très utile, voici comment on pourrait faire :
public static String format(double d) { String s = String.format(Locale.FRENCH, "%,.2f", d); int n = s.indexOf(","); if (n != -1 && s.substring(n).equals(",00")) return s.substring(0, n); else return s; } public static void main(String[] args) { System.out.println(format(1.23)); // "1,23" System.out.println(format(100000)); // "100 000" System.out.println(format(12345.6789)); // "12 345,68" }