Bonjour,
Je voudrais avoir une astuce pour gérer les arrondis.
Si je ne veux garder que les deux premiers chiffres apres la virgule....
merci de votre aide.
Version imprimable
Bonjour,
Je voudrais avoir une astuce pour gérer les arrondis.
Si je ne veux garder que les deux premiers chiffres apres la virgule....
merci de votre aide.
Avant de poster, :recherch: et de regarder la :faq:.
en fait, je voudrais pour voir arrondir de façon 'intelligente'
c'est a dire les deux décimales restantes doivent etre arrondis au plus pres :
ex : 12.334 => 12.33
12.336 => 12.34
merci
C'est bien ce que je disais : :recherch:.
Ce problème à déjà été abordé sur le forum (et récemment en plus).
méthode printf() de PrintStream
Affiche:Code:
1
2 float nombre = 3.2539f System.out.printf("%.2f",nombre);
Code:3.25
ok merci pour ta reponse...
Cette solution est juste, et peut-être qu'elle convient à niro75, mais elle a quand même l'inconvénient de se limiter à l'utilisation d'un PrintStream ou d'un PrintWriter.
en fait je suis passé par une petite bidouille pour arrondir à l'unité supérieure :
J'ai modifié mon float en String et récupéré les trois dernieres valeurs apres la virgule.
Je fais un test sur le 3eme decimale et si >5 j'ajoute 1 au 2eme decimale.
voila voila
je suppose qu'il y a plus simple mais bon
Mais bon quoi ?Citation:
Envoyé par niro75
C'est si difficile que ça d'utiliser la fonction rechercher ?
non effectivement, mais c'etait une phrase de conclusion peut etre un peu malheureuse.
En effet, mais je trouve que le fait d'arrondir un nombre ne sert qu'à rendre son affichage plus commode et plus juste. Je trouve qu'il faudrait garder dans les variables la forme la plus précise du nombre pour fausser le moins possible les calculs ultérieurs.Citation:
Envoyé par le y@m's
Tout à fait d'accord et je n'ai jamais dit le contraire :roll:.Citation:
Envoyé par BoudBoulMan
Sinon, une méthode pour arrondir ton nombre est de multiplier ce nombre par 10 exposant n où n est le nombre de décimale voulue dans le chiffre arrondi. Ensuite, tu ajoute 0.5 à ce nombre et tu le tronque en le mettant sous la forme d'un int et puis tu le divise par la puissance de 10 que tu as utilisé pour le multiplier.
Exemple, si tu veux arrondir à 2 chiffres après la virgule:
Ainsi, le float nombre contient le nombre 45.26Code:
1
2
3
4
5 float nombre = 45.258415f; nombre *= 100; nombre += 0.5; int entier = (int)nombre; nombre = entier/100;
Cette méthode et non seulement inutilement compliquée, mais en plus elle va à l'encontre de ce que tu as dit dans ton post précédent :?.
Je le sais bien :lol: mais j'ai compris ce que tu voulais dire en disant que l'on était restreint au PrintWriter (enfin je crois avoir compris ^^) et que l'on ne peut utiliser cette méthode pour l'afficher dans un JLabel par exemple.Citation:
Envoyé par le y@m's
Donc j'essaie juste de donner une manipulation pour arrondir un nombre à n'importe quelle décimale. Ensuite, il suffit de faire un Float.valueOf(...).toString(); pour avoir l'équivalent en String et pouvoir afficher l'arrondi.
Et en disant que c'est inutilement compliqué, connais-tu une manière plus simple de faire (sans utiliser printf bien sûr) ?
La réponse se trouve dans mes deux premiers posts :roll:.Citation:
Envoyé par BoudBoulMan
Hmmm... en effet :P
Bon, alors après des recherches, je conclus que la meilleure façon de procéder est d'utiliser la classe DecimalFormat tout simplement :lol:
Oui, a priori cette méthode semble séduisante.. sauf si le float dépasse 2 147 483 647,47 :?Citation:
Envoyé par BoudBoulMan
D'ailleurs que dit la spec Java dans ce cas ? la conversion float -> int est-elle effectuée modulo 2^32 ?
Ah enfin, Je commençais à désespérer :D.Citation:
Envoyé par BoudBoulMan