[Java] afficher seulement 3 chiffres apres la virgule...

afficher seulement 3 chiffres apres la virgule... [Java] - Programmation

Marsh Posté le 29-11-2001 à 18:15:57    

... pour un double c possible ?

Reply

Marsh Posté le 29-11-2001 à 18:15:57   

Reply

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.

Reply

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

Reply

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++

Reply

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]

Reply

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 :D
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]

Reply

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)

Reply

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"

Reply

Marsh Posté le 27-10-2009 à 12:34:13    

Joli up.
RTFM printf

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed