Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Metodo
Forum - Java - Metodo

Avatar
Archer312 (Normal User)
Rookie


Messaggi: 32
Iscritto: 30/06/2012

Segnala al moderatore
Postato alle 2:38
Mercoledì, 04/07/2012
Salve a tutti, in attesa che il libro ordinato mi arrivi, ne sto attualmente leggendo un altro per approfondire i concetti base imparati in giro, a mio parere un buon libro, completo ecc..., ma purtroppo mostra negli esempi cose che magari non spiega in quel determinato capitolo, quindi mi porta inevitabilmente, se voglio capire l'esempio, a cercare da fonti esterne quel determinato metodo che non viene spiegato esattamente li.
Dunque, porgo le seguenti domande sui metodi Math.floor() e Math.random().
Dunque, il metodo Math.floor() arrotonda il numero per difetto e per eccesso?
E allora che differenza c'è fra i codici?

Codice sorgente - presumibilmente Plain Text

  1. System.out.println((int)(Math.random()*10));


Non arrotonda ugualmente rispetto a:
Codice sorgente - presumibilmente Plain Text

  1. System.out.println(Math.floor(Math.random()*10));


?
Mentre è corretto scrivere un qualcosa del tipo:
Codice sorgente - presumibilmente Plain Text

  1. System.out.println((int)Math.floor(Math.random()*10));


?

Ultima modifica effettuata da Archer312 il 04/07/2012 alle 2:44
PM Quote
Avatar
Premoli (Normal User)
Pro


Messaggi: 108
Iscritto: 25/06/2009

Segnala al moderatore
Postato alle 9:17
Mercoledì, 04/07/2012
Ciao!!

Testo quotato

Postato originariamente da Archer312:
Codice sorgente - presumibilmente Plain Text

  1. System.out.println((int)(Math.random()*10));


Non arrotonda ugualmente rispetto a:
Codice sorgente - presumibilmente Plain Text

  1. System.out.println(Math.floor(Math.random()*10));





Non sono la stessa cosa sia dal punto di vista logico, sia dal punto di vista del risultato finale, mi spiego meglio nella prima parte tu stai semplicemente facendo un cast da double ad intero nel secondo caso invece stai utilizzando una funzione matematica, in italiano viene chiamata parte intera, che restituisce il più grande intero che sia minore o uguale al'argomento che gli passi... in questo caso ti può sembrare che il risultato sia lo stesso perché in effetti stai provando con numeri positivi, tuttavia se provi con numeri negativi ti accorgerai della differenza ad esempio:

Codice sorgente - presumibilmente Java

  1. double x = -1.1;
  2. System.out.println((int)(x)); //qui otterrai -1
  3. System.out.println(Math.floor(x)); //qui -2



L'ultima istruzione che hai postato è lecita stai semplicemente facendo un cast da double (la funzione floor restituisce un double) ad int.

PM Quote
Avatar
Archer312 (Normal User)
Rookie


Messaggi: 32
Iscritto: 30/06/2012

Segnala al moderatore
Postato alle 15:06
Mercoledì, 04/07/2012
Codice sorgente - presumibilmente Java

  1. double x = -1.1;
  2. System.out.println((int)(x)); //qui otterrai -1
  3. System.out.println(Math.floor(x)); //qui -2


Dunque, se non ho capito male funziona così, qualora si abbia un numero negativo, il cast eliminerà qualsiasi numero dopo la virgola, a prescindere se sia negativo o positivo, mentre il metodo Math.floor() restituirà il numero minore sempre?
Cioè, se la variabile ha come valore -2.3, restituirà -3, e qui ci siamo, ma quindi questo metodo restituirà SEMPRE il numero minore?

Ultima modifica effettuata da Archer312 il 04/07/2012 alle 15:08
PM Quote
Avatar
Premoli (Normal User)
Pro


Messaggi: 108
Iscritto: 25/06/2009

Segnala al moderatore
Postato alle 15:52
Mercoledì, 04/07/2012
Semplicemente con il cast converti una qualche variabile da un tipo ad un altro nel nostro caso da double ad int (ti consiglio di leggere qualcosa a riguardo, ci sono un sacco di informazioni su internet)...

floor come già ti ho detto è una funzione matematica che dato un numero reale restituisce il più grande intero minore o uguale al numero in ingresso.

Tutto qui...

PM Quote
Avatar
Archer312 (Normal User)
Rookie


Messaggi: 32
Iscritto: 30/06/2012

Segnala al moderatore
Postato alle 16:47
Mercoledì, 04/07/2012
perfetto, grazie!
Ho capito ;).
Spero che il libro nei prossimi capitoli abbia esempi più attinenti alle spiegazioni... :(

PM Quote