HOWTO · Java

Konvertieren von Double in Int in Java

Dieser Artikel beschreibt die Konvertierung von Double in Integer in Java.

Auf dieser Seite

Um ein Java-double in ein int umzuwandeln, verwenden Sie (int) value, wenn der Wert gegen null abgeschnitten werden soll, (int) Math.round(value), wenn Sie auf die nächste ganze Zahl runden möchten, oder value.intValue(), wenn der Wert ein Double-Objekt ist. Bei 12.9 ergeben der Cast und intValue() den Wert 12; Runden mit anschließendem Cast ergibt 13.

Wählen Sie die Methode passend zum gewünschten Verhalten: Ein Cast ist die einfachste Möglichkeit zum Abschneiden, Math.round() rundet auf eine nahe ganze Zahl und Double.intValue() eignet sich, wenn bereits ein Wrapper-Objekt vorliegt. In den folgenden Beispielen liefern alle Methoden ein int; der Aufruf Math.round() selbst gibt vor dem expliziten Cast jedoch ein long zurück.

So wandeln Sie in Java ein Double mit einem Type-Cast in ein Int um

Ein Cast wandelt ein primitives double in den primitiven Typ int um. Java schneidet dabei den Nachkommaanteil in Richtung null ab; es rundet nicht ab. So wird beispielsweise 12.9 zu 12. Bei der Umwandlung gehen außerdem Informationen verloren, da ein int keinen Nachkommaanteil speichern kann. Eine ausführlichere Erklärung des Unterschieds zwischen erweiternden und einschränkenden Umwandlungen finden Sie im Leitfaden zum Type-Casting in Java.

Die Syntax lautet (int) doubleValue. Hier sehen Sie ein vollständiges Beispiel, das Sie unter dem Namen DoubleToIntConversion.java ausführen können:

Führen Sie dieses Beispiel aus:

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);
    }
}

Die bereitgestellte Laufzeitausgabe bestätigt, dass das Beispiel für das int-Ergebnis 12 ausgibt. Die Umwandlung schneidet Werte auf beiden Seiten von null in Richtung null ab: -12.9 wird beispielsweise zu -12 und nicht zu -13.

So wandeln Sie in Java ein Double mit der Methode round() in ein Int um

Verwenden Sie Math.round(), wenn Sie auf die nächste ganze Zahl runden möchten, anstatt den Nachkommaanteil abzuschneiden. Bei einem Argument vom Typ double gibt Math.round() ein long zurück. Muss das Ergebnis ein int sein, wandeln Sie es daher explizit um: (int) Math.round(value). So wird 12.9 zu 13 gerundet, während 12.3 zu 12 wird.

Für den Cast zu int gelten eigene Bereichsregeln. Liegt das gerundete long außerhalb des Wertebereichs von int, meldet die Umwandlung keinen Fehler; das Ergebnis folgt den Regeln für einschränkende Umwandlungen in Java. Lassen Sie den Wert als long, wenn das vollständige Ergebnis möglicherweise den Wertebereich von int überschreitet.

Hier sehen Sie ein vollständiges Beispiel, das Sie unter dem Namen RoundDoubleToInt.java ausführen können:

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);
    }
}

Die bereitgestellte Laufzeitausgabe bestätigt, dass Math.round() den Wert 13L liefert, der anschließend in den int-Wert 13 umgewandelt wird.

So wandeln Sie in Java ein Double mit der Methode intValue() in ein Int um

intValue() ist eine Instanzmethode der Wrapper-Klasse Double und gehört nicht zum primitiven Typ double. Rufen Sie sie für ein Double-Objekt auf, um ein int zu erhalten. Wie ein primitiver Cast schneidet die Methode den Wert in Richtung null ab, statt zu runden. Ein Double mit dem Wert 12.9 ergibt daher 12.

Die Syntax lautet wrapper.intValue(). Java kann einen primitiven double beim Zuweisen in ein Double verpacken, wie im folgenden Beispiel. Speichern Sie das vollständige Programm unter dem Namen 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);
    }
}

Die bereitgestellte Laufzeitausgabe bestätigt, dass Double.intValue() für 12.9 den Wert 12 liefert.

Wenn Sie stattdessen Text parsen möchten, anstatt einen bereits vorhandenen Zahlenwert umzuwandeln, lesen Sie die Anleitung zum Umwandeln einer hexadezimalen Zeichenfolge in ein int in Java.