Antares88
01-07-2008, 17:08
Mi trovo alle prese con uno stupidissimo esercizio, e il risultato non mi torna probabilmente per un errore altrettanto sciocco.
Devo calcolare il massimo valore degli int.
Ho tentato due strade:
La prima è un ciclo while che incrementa una variabile int di uno finché essa è maggiore o uguale a zero. Poiché con l'ultimo incremento la variabile prende valore negativo vista la circolarità del dominio del tipo int, il programma sottrae 1 prima di stamparla. QUesto sistema mi da il risultato giusto, ossia 2147483647.
La seconda strada è semplicemente calcolare (2^31)-1 utilizzando il metodo pow della classe Math.
Quest'ultimo sistema mi da un risultato sbagliato: 2147483646.
Ecco il codice:
class MaxInt
{
public static void main(String[] args)
{
int max = 0;
while(max>=0)
max++;
System.out.println(max-1);
System.out.println((int)Math.pow(2, 31) -1);
}
}
Ho la sensazione che sia qualcosa di relativo alla conversione esplicita, forse dipende dalla precedenza degli operatori ?
Devo calcolare il massimo valore degli int.
Ho tentato due strade:
La prima è un ciclo while che incrementa una variabile int di uno finché essa è maggiore o uguale a zero. Poiché con l'ultimo incremento la variabile prende valore negativo vista la circolarità del dominio del tipo int, il programma sottrae 1 prima di stamparla. QUesto sistema mi da il risultato giusto, ossia 2147483647.
La seconda strada è semplicemente calcolare (2^31)-1 utilizzando il metodo pow della classe Math.
Quest'ultimo sistema mi da un risultato sbagliato: 2147483646.
Ecco il codice:
class MaxInt
{
public static void main(String[] args)
{
int max = 0;
while(max>=0)
max++;
System.out.println(max-1);
System.out.println((int)Math.pow(2, 31) -1);
}
}
Ho la sensazione che sia qualcosa di relativo alla conversione esplicita, forse dipende dalla precedenza degli operatori ?