Strano errore di esponenziazione [duplicato]
-
21-12-2019 - |
Domanda
Allora, ho questo codice, che funziona bene per i primi 4 numeri, ma poi dà un numero sbagliato, qual è il problema?(So che posso anche usare Math.pow, ma volevo provare prima a farlo da solo)
public static void main(String [] args){
int number = 98;
int result = number;
int exponentt = 5;
int exponent = exponentt--;
System.out.println(Math.pow(number, exponent));
for (int i = 0; i < exponentt ;i++) {
result = result * number;
System.out.println(result );
}
}
Consolle:9604 92236816 449273376
Soluzione
Cambia il tuo int number
ad a long
e otterrai il risultato giusto.
public static void main(String [] args){
**long** number = 98;
**long** result = number;
int exponentt = 5;
int exponent = exponentt--;
System.out.println(Math.pow(number, exponent));
for (int i = 0; i < exponentt ;i++) {
result = result * number;
System.out.println(result );
}
}
Esce dall'intervallo per l'int e ti dà risultati strani. int
può memorizzare solo fino a 2,147,483,647
-- 98^4 è ben oltre (9.039.207.968)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow