joebar3333
Messages postés41Date d'inscriptiondimanche 24 octobre 2004StatutMembreDernière intervention29 juin 2005
-
6 mai 2005 à 11:34
cs_Dobel
Messages postés333Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention23 novembre 2009
-
10 mai 2005 à 14:45
joebar3333
Messages postés41Date d'inscriptiondimanche 24 octobre 2004StatutMembreDernière intervention29 juin 2005 6 mai 2005 à 14:31
Salut,
Merci d'avoir répondu, mais pourrais-tu me donner un exemple simple stp ? Ca me ferait gagner pas mal de temps, après je pourrai l'adapter à mes besoins.
cs_Dobel
Messages postés333Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention23 novembre 20091 10 mai 2005 à 14:43
Salut
la première méthode est d'utiliser Math.round
par exemple :
double nombre = 8.4f; // c'est le nombre à arrondir
System.out.println(nombre);
System.out.println(Math.round(nombre*10)/10.);
retourne :
8.399999618530273
8.4
MAIS (!) le problème, comme dit dans ta question précédente, est
que tu n'es pas assuré d'avoir un résultat parfait, il peut rester des
imprécisions.
J'avais déjà eu ce problème en travaillant sur des nombres très petits, pour un traceur de fractals fait pour le fun :)
les arrondis étaient vraiment dégueux... (pour info, comme
j'utilisais une DLL en C pour les calculs, j'avais rajouté les arrondis
dans la DLL, en toute finesse et délicatesse :D :D)
Avec NumberFormat, tu es assuré d'avoir un arrondi parfait, mais
par contre, tu te retrouves avec une chaîne de caractères :-|
Enfin, il est peut-être possible d'utiliser BigDecimal si le
problème de précision est crucial, mais je n'ai pas le temps de
regarder maintenant
Salut !
Dobel
[Une fois rien, c'est rien; deux
fois rien, ce n'est pas beaucoup, mais pour trois fois rien, on peut
déjà s'acheter quelque chose, et pour pas cher]
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Dobel
Messages postés333Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention23 novembre 20091 10 mai 2005 à 14:45
et un petit conseil aussi :)
si tu n'as pas d'impératifs de mémoire, essaie d'effectuer au maximum
tes calculs avec des doubles, en ne convertissant en float que quand
c'est nécessaire. Ca améliorera la précision, et il me semble qu'il n'y
a même pas de différence au niveau du temps d'exécution.
Dobel
[Une
fois rien, c'est rien; deux fois rien, ce n'est pas beaucoup, mais pour
trois fois rien, on peut déjà s'acheter quelque chose, et pour pas cher]