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

¿Fue útil?

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
scroll top