PDA

Visualizza la versione completa : [java] arrotondamento su double...


Simoxxx
17-05-2005, 17:43
public void setInteroSup(double z){
String Ris = new String("");
//double z = 501.8; -> oki 502
//z = 501; -> oki 501

z = 1/2;

Ris = Double.toString(z);
char item = '.';
int position = Ris.lastIndexOf(item); //restituisce -1 se non trova il punto
String appo = Ris.substring(position+1,Ris.length());

if(Integer.parseInt(appo) > 0)
z = Double.parseDouble(Ris.substring(0,position)) + 1;//arrotondo
this.interosup=z;

}
Il metodo arrotonda all'intero successivo.
Il problema Ŕ che se passo un valore che risulta da una divisione, non funziona... (z=1/2=0,5) dovrebbe restituire 1, invece 0,0
Come fare????

floyd
17-05-2005, 18:05
ma usare Math.ceil fa brutto?

Simoxxx
18-05-2005, 10:01
Se z=0.5 funziona correttamente, restituendo 1.
Ho la necessitÓ di assegnare a z il valore di una divisione, e in qsto caso se z=1/2 z assume il valore 0.0 come pure interosup.
Come fare?
Thxxx


public void setInteroSup(double z){
String Ris = new String("");
z=1/2;
this.setZ(z);
Ris = Double.toString(z);
Ris.replace('.',',');
z = Double.parseDouble(Ris);
double temp=Math.ceil(z);
this.interosup=temp;
}

kentaromiura
18-05-2005, 10:06
Originariamente inviato da Simoxxx
Se z=0.5 funziona correttamente, restituendo 1.
Ho la necessitÓ di assegnare a z il valore di una divisione, e in qsto caso se z=1/2 z assume il valore 0.0 come pure interosup.
Come fare?
Thxxx


public void setInteroSup(double z){
String Ris = new String("");
z=1/2;
this.setZ(z);
Ris = Double.toString(z);
Ris.replace('.',',');
z = Double.parseDouble(Ris);
double temp=Math.ceil(z);
this.interosup=temp;
}
:master:
cioe' tu passi 1/2 ..

prova a passare(double)1/(double)2
oppure 1.00/2.00 :master:

Simoxxx
18-05-2005, 10:12
grazie,davvero, nn sai qto tempo c'ho perso...Ŕ che in giro nn ho trovato molti esempi...
Thxxx :ciauz:

Loading