Bonjour,
Je ne comprends définitivement pas comment fonctionnent les nombres en Java.
J'ai un double a à approximer, et un double b qui détermine le pas de l'approximation.
Par exemple, approxime(123.123, 0.2) doit renvoyer 123.2. C'est à dire, le nombre arrondi par pas de 0,2. un pas de 0,5 renverrait des nombres finissant par 0 ou 0,5.
J'ai donc tenté toute une série de méthodes pour faire ça :
Sans succes. (résultats du type 123,2000000003)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13private static double approxime(double d,double precision) { return Math.round(d/precision)*precision; } private static double approxime(double d,double precision) { return Math.floor(d/precision+0.5)*precision; } private static double approxime(double d,double precision) { return (int)(d/precision+0.5)*precision; } private static double approxime(double d,double precision) { return Math.round((float)(d/precision))*precision; }
J'ai vu que beaucoup utilisaient aussi Math.pow. J'ai donc tenté vainement un magnifique
Et obtenant encore le même résultat insatisfaisant, j'ai lentement glissé de la frustration à l'amertume, puis de l'amertume vers la dépression.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private static double approxime(double d,double precision) { return ((int)(d/precision+0.5))*Math.pow(10, Math.log10(precision)); }
Est-ce que quelqu'un pourrait me proposer une méthode fonctionnelle pour mon problème, et même, si ce n'est pas trop demander, m'expliquer pourquoi mes tentatives n'ont pas abouties.
Un grand merci







Répondre avec citation
Partager