Afficher un double avec 0 (s'il est entier) ou 2 décimales
Résolu
sylent84
Messages postés
3
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
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.
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éthodesetMaximumFractionDigits(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" }
-