2010-12-27 16 views
110

Non riesco a trovare la risposta che sto cercando per quanto riguarda una semplice domanda: come posso arrotondare qualsiasi numero al più vicino int?Java Arrotonda qualsiasi numero

Ad esempio, ogni volta che il numero è di 0,2, 0,7, 0,2222, 0,4324, 0,99999 vorrei il risultato di essere 1.

Finora ho

int b = (int) Math.ceil(a/100); 

Non sembra a fare il lavoro, però.

+0

Perché stai dividendo per 100 nel tuo codice di esempio? –

+12

Scommetto che il tuo 'a' ha un tipo intero. –

+0

Raccontaci quali sono i tuoi input e le tue uscite previste. –

risposta

216

Math.ceil() è la funzione corretta da chiamare. Sto indovinando a è un int, che renderebbe a/100 eseguire l'aritmetica di interi. Prova invece a Math.ceil(a/100.0).

int a = 142; 
System.out.println(a/100); 
System.out.println(Math.ceil(a/100)); 
System.out.println(a/100.0); 
System.out.println(Math.ceil(a/100.0)); 
System.out.println((int) Math.ceil(a/100.0)); 

Uscite:

1 
1.0 
1.42 
2.0 
2 

Guarda http://ideone.com/yhT0l

+1

ah, azzeccato ... grazie – Stevanicus

+1

solo se "a" è doppio –

+0

^^ "a" deve essere un doppio o un cast doppio. – Codeversed

12

Non so perché si sta dividendo per 100 ma qui la mia ipotesi int a;

int b = (int) Math.ceil(((double)a)/100); 

o

int b = (int) Math.ceil(a/100.0); 
6
int RoundedUp = (int) Math.ceil(RandomReal); 

Questo sembrava fare il lavoro perfetto. Ha funzionato ogni volta.

1

Assumendo un doppio e abbiamo bisogno di un numero arrotondato senza decimali. Usa la funzione Math.round().
Questa è la mia soluzione.

double a = 0.99999; 
int rounded_a = (int)Math.round(a); 
System.out.println("a:"+rounded_a); 

Output : 
a:1 
+0

Questa è una risposta sbagliata, poiché viene chiesto qui di arrotondare UP se a = 0.2 il risultato sarà 0 – Mohamed23gharbi

Problemi correlati