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

È stato utile?

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