Arrondis explication methode
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 :
Code:
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;
} |
Sans succes. (résultats du type 123,2000000003)
J'ai vu que beaucoup utilisaient aussi Math.pow. J'ai donc tenté vainement un magnifique
Code:
1 2 3
| private static double approxime(double d,double precision) {
return ((int)(d/precision+0.5))*Math.pow(10, Math.log10(precision));
} |
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.
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