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
13 private 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
Partager