PDA

View Full Version : [JAVA] Problemino con i float...


PaVi90
13-04-2008, 17:01
Ciao a tutti,
ho un problema nella gestione dei float.
In pratica ho n float da sommare tra loro, originariamente con una o due cifre decimali (quindi del tipo x.x o x.xx).
Quando sommo i numeri tra loro, perņ, noto una certa perdita di precisione, ed il risultato non "si contiene" a due cifre dopo la virgola ma va oltre (ad esempio il risultato dovrebbe venire 35.47 e invece mi ritrovo 35.46999996).
Come posso fare per approssimare anche il risultato a due cifre dopo la virgola?
Ho pensato di: moltiplicare il risultato per 100, aggiungergli 0,5 e castrarlo ad int, ed infine dividerlo per 100 riassegnandolo ad un float. Ma non funge (mi elimina le cifre decimali).
:help:

||ElChE||88
13-04-2008, 17:19
Come posso fare per approssimare anche il risultato a due cifre dopo la virgola?

double rounded = Math.round(35.46999996 * 100.0) / 100.0;

o

System.out.printf("%.2f", 35.46999996);

PaVi90
13-04-2008, 17:28
EDIT

PaVi90
13-04-2008, 17:30
Il primo metodo non posso usarlo... mi serve necessariamente un float in uscita!!
Il secondo metodo cosa fa? Stampa a video? E' una print line?
Thanks ;)

||ElChE||88
13-04-2008, 17:33
Il secondo metodo cosa fa? Stampa a video? E' una print line?
Thanks ;)Si.
Il primo metodo non posso usarlo... mi serve necessariamente un float in uscita!!

float rounded = Math.round(35.46999996 * 100.0) / 100f;

:fagiano:

PaVi90
13-04-2008, 17:34
Thanks ;)

Ora funge :sofico:

afsdfdlecosdfsfdcco
13-04-2008, 20:28
Il primo metodo non posso usarlo... mi serve necessariamente un float in uscita!!

float f = Float.parseFloat(String.format("%.2f", 35.46999996));

PaVi90
14-04-2008, 07:20
float f = Float.parseFloat(String.format("%.2f", 35.46999996));

Thanks; ma č equivalente al secondo metodo postato da ||ElChE||88 ?