afficher seulement 3 chiffres apres la virgule... [Java] - Programmation
Marsh Posté le 29-11-2001 à 19:55:02
si c pour affichage, tu mets ton double dans un String et apres tu eneleves les caracteres que tu veux po.
Marsh Posté le 29-11-2001 à 19:56:12
euh non en fait c po bien car tu peux po savoir a l'avance combien de carac fera ton chiff avec 3 chiff apres la virgule
desole
Marsh Posté le 29-11-2001 à 20:06:24
bah maitre_mulot à raison...fo mettre ton double dans un string ou un stringbuffer.....apres tu fait une recherche sur le "." ou "," et tu extrais ton chiffre avec un substring(0,indexVirgule+3)...ou un truc du genre....fo voir mais sa devrais etre un truc comme sa
A++
Marsh Posté le 29-11-2001 à 20:42:22
ok donc autant pour moi ca m'apprendra à être clair : le problème vient principalement du fait que j'arrive quelquefois à des valeurs extremement petites du style 1.23456789E-4 (notez bien le E a la fin) ce qui fait qu'en castant ce double en string et en faisant un substring ben c me renvoie un 1.234 alors que c'est pas ca du tout... j'ai aussi essaye en multipliant le double en question par 1000 puis en le castant en int pour le rediviser par 1000 (c totalement nimp mais chuis a cours d'idees) mais la le pb c que quelquefois il reste un 4eme chiffre apres la virgule (qui est un 0 mais pas moyen de le virer "proprement" )... j'ai aussi essaye avec la classe decimalformat qui me fait exactement les mêmes erreurs en sortie
[edtdd]--Message édité par _aLF--[/edtdd]
Marsh Posté le 29-11-2001 à 20:43:26
ou sinon : double d = (int(d*1000))/1000;
edit : bon apparemment ça marche pas en java
edit2 : quoique tu peux transformer ce nombre résultant en string, analyser la string et couper ce qu'il reste après les trois chiffres de la partie décimale.
[edtdd]--Message édité par youdontcare--[/edtdd]
Marsh Posté le 29-11-2001 à 20:56:09
comme dit j'ai teste de 3 manieres differentes :
int i = (int)(d*1000);
double r = (double)i / 1000;
return r;
--> resultat : un quatrieme chiffre qui traine desfois derriere
java.text.DecimalFormat form = new java.text.DecimalFormat( "0.000" );
try { return form.parse(form.format(d)); }
catch ( Exception e ) {}
--> resultat : idem
return (new Double((""+d).substring(0, 4))).doubleValue();
--> resultat : faux quand nombre tres petits (avec de E^-x)
Marsh Posté le 29-11-2001 à 20:59:15
le truc sympa c ke
return ((double)(Math.round(d*100))) / 100.0;
ca marche impeccable
alors qu'en mettant des 1000 au lieu des 100 ben ca me fout des 0 "parasites"
Marsh Posté le 29-11-2001 à 18:15:57
... pour un double c possible ?