bonjour,
voici une methode qui me sert à arrondir un nombre:
je cherche à faire la transformation suivante:
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 l'appelle donc avec le constructeur suivant:EX: 534512.965 => round(534512.965 , 3 , 4)=[534.4129,3]
=>534.5129E3
aucune erreur lors de la compilation. je cree le jar. je le met dans class path d'un autre projet et je l'appelle.
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]);*/
je donne max=534512.965
et là ça me donne l'erreur:
je chage mon code:failed to write the value of the property "max"
par
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]);
et là ca passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ScaleValue1.setText(Double.toString(max));
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
Partager