Extraño error de exponenciación [duplicado]
-
21-12-2019 - |
Pregunta
Entonces, tengo este código, que funciona bien para los primeros 4 números, pero luego da un número incorrecto. ¿Cuál es el problema?(Sé que también puedo usar Math.pow, pero primero quería intentar hacerlo yo mismo)
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 );
}
}
Consola:9604 92236816 449273376
Solución
Cambia tu int number
a un long
y obtendrás el resultado correcto.
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 );
}
}
Se sale del rango del int y le da resultados extraños. int
sólo puede almacenar hasta 2,147,483,647
-- 98^4 está muy por encima de eso (9,039,207,968)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow