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 : 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;
    }
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 : 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));
    }
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