bonjour,
voici une methode qui me sert à arrondir un nombre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
    public double[] round(double value,int ent, int dec) {//nombre à arrondir;longueur souhaitée pour la partie entiere; longueur souhaitée pour la partie decimale
        int partent=(int)value;//partie entiere
        int longint=Integer.toString(partent).length();//logueur de la partie entiere
        double div = Math.pow(10.0, (double)(longint-ent));
        double mult = Math.pow (10.0, (double)dec);//multiplicateur
        double round=Math.round((value/div) * mult) / mult;//arrondi
        double exp=div;//exposant
        double[] scale= new double[2];
        scale[1]=round;
        scale[2]=exp;
        return scale;
    }
je cherche à faire la transformation suivante:
EX: 534512.965 => round(534512.965 , 3 , 4)=[534.4129,3]
=>534.5129E3
je l'appelle donc avec le constructeur suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public Double getMax() {
        return (this.max);
    }
 
 
 
    public void setMax(Double max) {
        this.max=max;
        ScaleValue1.setText(Double.toString(round(max,3,4)[1])+"e"+round(max,3,4)[2]);
        double step=(max-min)/11;   
        /*ScaleValue2.setText(Double.toString(round(min+step,3,4)[1])+"e"+round(min+step,3,4)[2]);
        ScaleValue3.setText(Double.toString(round(min+2*step,3,4)[1])+"e"+round(min+step,3,4)[2]);
        ScaleValue4.setText(Double.toString(round(min+3*step,3,4)[1])+"e"+round(min+step,3,4)[2]);
        ScaleValue5.setText(Double.toString(round(min+4*step,3,4)[1])+"e"+round(min+step,3,4)[2]);
        ScaleValue6.setText(Double.toString(round(min+5*step,3,4)[1])+"e"+round(min+step,3,4)[2]);
        ScaleValue7.setText(Double.toString(round(min+6*step,3,4)[1])+"e"+round(min+step,3,4)[2]);
        ScaleValue8.setText(Double.toString(round(min+7*step,3,4)[1])+"e"+round(min+step,3,4)[2]);
        ScaleValue9.setText(Double.toString(round(min+8*step,3,4)[1])+"e"+round(min+step,3,4)[2]);
        ScaleValue10.setText(Double.toString(round(min+9*step,3,4)[1])+"e"+round(min+step,3,4)[2]);*/
aucune erreur lors de la compilation. je cree le jar. je le met dans class path d'un autre projet et je l'appelle.
je donne max=534512.965
et là ça me donne l'erreur:
failed to write the value of the property "max"
je chage mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ScaleValue1.setText(Double.toString(round(max,3,4)[1])+"e"+round(max,3,4)[2]);
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ScaleValue1.setText(Double.toString(max));
et là ca passe.
j'en concule donc que le probleme vient de la classe round mais n'arrieve pas à voir ou est le probleme. elle retourne bien un double[] et donc double[1] et double[2] sont des doubles auxquels je peux appliquer un Double.toString, non?
qqun voit-il ou est l'erreur?
merci