PDA

Visualizza la versione completa : [JAVA/JSP] Arrotondare un int


olivs
17-08-2004, 17:34
Se ho un numero intero e devo fare una divisione con un altro intero, che tipo di variabile uso? Boolean??

GattoBastardo
17-08-2004, 17:38
Originariamente inviato da olivs
Se ho un numero intero e devo fare una divisione con un altro intero, che tipo di variabile uso? Boolean??
un float, se non erro
i double invece sono per la divisione tra long

olivs
17-08-2004, 17:39
quindi per dire lo definisco cosi:
float divisione;
mi serve arrivare ad avere la percentuale senza virgola quindi dovrei fare una cosa tipo 1/3=0,3333333... arrotondare quindi al secondo decimale dopo la virgola

GattoBastardo
17-08-2004, 17:47
Originariamente inviato da olivs
quindi per dire lo definisco cosi:
float divisione;
mi serve arrivare ad avere la percentuale senza virgola quindi dovrei fare una cosa tipo 1/3=0,3333333... arrotondare quindi al secondo decimale dopo la virgola

potresti anche semplicemente passare il float a un NumberFormat e ottenere una stringa gia' arrotondata al decimale che vuoi tu

olivs
17-08-2004, 17:51
Ehm visto che sono alle prime armi cosa faccio?

GattoBastardo
17-08-2004, 17:57
Originariamente inviato da olivs
Ehm visto che sono alle prime armi cosa faccio?

ok, scusa... ti posto un esempio:



float divisione = intuno/intdue;
DecimalFormat dFormat = new DecimalFormat("0.00");
String risultatoArrotondato = dFormat.format((double) divisione);


nel caso tuo specifico di prima ottieni "0.34"

se invece devi ottenere un float arrotondato per altri calcoli



float divisione = intuno/intdue;
divisione = divisione * 100;//in modo da ottenere un arrotondamento di due decimali
divisione = (Math.round(divisione)/100);


potrebbero esserci delle imprecisioni, visto che ho adattato a getto un paio di miei pezzi di codice.
ricorda sempre di stare attento a non mischiare int e long o float e double, rischi di perdere in precisione.

:ciauz:

olivs
17-08-2004, 18:01
o grazie molto gentile, al momento la difficolta piu grande che incontro è dove trovare queste belle funzioncine al volo

GattoBastardo
17-08-2004, 18:03
Originariamente inviato da olivs
o grazie molto gentile, al momento la difficolta piu grande che incontro è dove trovare queste belle funzioncine al volo

ti consiglio di scaricarti un buon IDE (Netbeans o Eclipse) e i javadoc

poi fai un salto qui (http://onjava.com) a leggere qualcosa

:ciauz:

kateetak
17-08-2004, 18:07
Allora... sono tornata dalle vacanze pronta per rispondere all'unico moderatore a cui posso spiegare qlksa ank'io.

Per fare una divisione tra interi puoi usare un double o un float a seconda della precisione che vuoi ottenere. Nel tuo caso penso che basti un double.
In ogni caso non ti do una risposta precisa perchè non ho voglia di fare i conticini... se vuoi essere sicuro guarda la precisione di questi due diversi tipi di dato.

Sicuramente non devi usare un boolean che può avere solo due valori: vero o falso.

Se fai una divisione di questo tipo:
1/3 otterrai 0 perchè automaticamente java capisce che vuoi un risultato intero, per averne uno con la virgola fai 1/3.0.
A questo punto per avere il risultato formattato fai:




//res contiene il risultato della tua operazione
double res = 0.3333;

//individua il modo di rappresentare le percentuali a seconda delle impostazioni del tuo pc
NumberFormat nf = NumberFormat.getPercentInstance();

//imposti a 0 il numero delle cifre decimali che vuoi visualizzare
nf.setMaximFractionDigits(0);

//ottieni una stringa formattata come volevi
nf.format(res);



:ciauz:

olivs
18-08-2004, 12:32
Bella cosa sto provando a usare il codice che mi hai postato, ma mi da un errore di compilazione, non è che devo includere qualcosa di particolare per i vari conti tipo

<%@ page import="java.sql.*" %>
che si usa per sql?

Loading