HOWTO · Java

Converti Double in Int in Java

Questo articolo introduce come convertire il doppio in intero in Java.

In questa pagina

Per convertire un double Java in un int, usa il casting (int) value se vuoi troncare verso zero, (int) Math.round(value) se vuoi arrotondare all’intero più vicino oppure value.intValue() se il valore è un oggetto Double. Per esempio, con 12.9, il casting e intValue() restituiscono 12, mentre l’arrotondamento seguito dal casting restituisce 13.

Scegli il metodo in base al comportamento desiderato: il casting è il modo più semplice per troncare, Math.round() arrotonda all’intero vicino e Double.intValue() è utile quando hai già un oggetto wrapper. Negli esempi seguenti ogni metodo restituisce un int; la chiamata a Math.round() restituisce invece un long, che viene poi convertito con il casting.

Come convertire un double in un int in Java con il casting

Il casting converte un double primitivo nel tipo primitivo int. Java tronca la parte decimale verso zero, senza arrotondare per difetto. Per esempio, 12.9 diventa 12. La conversione può inoltre comportare una perdita di informazioni, perché un int non può conservare la parte frazionaria. Per una spiegazione più ampia della differenza tra conversioni widening e narrowing, consulta la guida sul casting in Java. La versione italiana di questa guida non è disponibile: il link apre l’articolo in inglese.

La sintassi è (int) doubleValue. Ecco un esempio completo, da salvare ed eseguire come DoubleToIntConversion.java:

Esegui questo esempio:

public class DoubleToIntConversion {
    public static void main(String[] args) {
        double value = 12.9;
        int result = (int) value;
        System.out.println("double: " + value);
        System.out.println("int: " + result);
    }
}

L’output di runtime fornito conferma che l’esempio produce 12 come risultato int. La conversione tronca verso zero sia per i valori positivi sia per quelli negativi: per esempio, -12.9 diventa -12, non -13.

Come convertire un double in un int in Java con il metodo round()

Usa Math.round() quando vuoi ottenere l’intero più vicino invece di troncare. Con un argomento double, Math.round() restituisce un long; se il risultato deve essere un int, applica esplicitamente il casting: (int) Math.round(value). Per esempio, 12.9 viene arrotondato a 13, mentre 12.3 diventa 12.

Il casting a int comporta anche limiti di intervallo. Se il long arrotondato non rientra nell’intervallo di int, la conversione a int non segnala un errore: il risultato segue le regole Java per le conversioni narrowing. Se il risultato completo può superare l’intervallo di int, conservalo come long.

Ecco un esempio completo, da salvare ed eseguire come RoundDoubleToInt.java:

public class RoundDoubleToInt {
    public static void main(String[] args) {
        double value = 12.9;
        long rounded = Math.round(value);
        int result = (int) rounded;
        System.out.println("double: " + value);
        System.out.println("rounded long: " + rounded);
        System.out.println("int: " + result);
    }
}

L’output di runtime fornito conferma che Math.round() produce 13L, che viene poi convertito nel valore int 13.

Come convertire un double in un int in Java con il metodo intValue()

intValue() è un metodo di istanza della classe wrapper Double, non del tipo primitivo double. Chiamalo su un oggetto Double per ottenere un int. Come il casting di un primitivo, tronca verso zero invece di arrotondare: un oggetto Double che contiene 12.9 restituisce 12.

La sintassi è wrapper.intValue(). Come mostrato nell’esempio seguente, Java può convertire automaticamente un double primitivo in un Double quando lo assegni a una variabile. Salva questo programma completo come DoubleWrapperToInt.java:

public class DoubleWrapperToInt {
    public static void main(String[] args) {
        Double value = 12.9;
        int result = value.intValue();
        System.out.println("Double: " + value);
        System.out.println("int: " + result);
    }
}

L’output di runtime fornito conferma che Double.intValue() restituisce 12 per 12.9.

Se invece di convertire un valore numerico esistente devi analizzare una stringa, consulta la guida su come convertire una stringa esadecimale in un int in Java.