HOWTO · Java

Java で Double を Int に変換する

この記事では、Java で double を integer に変換する方法を紹介します。

このページの内容

Javaでdoubleをintに変換するには、0に向かって切り捨てる場合は(int) value、最も近い整数に丸める場合は(int) Math.round(value)、値がDoubleオブジェクトならvalue.intValue()を使います。たとえば12.9の場合、キャストとintValue()の結果は12、丸めてからキャストした結果は13です。

必要な動作に応じて方法を選びます。切り捨てにはキャストが最も簡単で、Math.round()は近い整数に丸めます。すでにラッパーオブジェクトを使っている場合はDouble.intValue()が便利です。以下の例では各方法の結果はintですが、Math.round()の呼び出し自体はlongを返し、その後に明示的なキャストを行います。

Javaで型キャストを使ってdoubleをintに変換する

キャストを使うと、プリミティブ型のdoubleをプリミティブ型のintに変換できます。Javaは小数部分を0に向かって切り捨てます。切り下げではありません。たとえば12.9は12になります。intでは小数部分を保持できないため、変換によって情報が失われることもあります。拡大変換と縮小変換の違いについては、Javaの型キャストのガイドを参照してください。

構文は(int) doubleValueです。次の完全な例をDoubleToIntConversion.javaとして保存して実行できます。

次の例を実行してください:

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

提供された実行時出力では、この例のintの結果が12になることを確認できます。変換は正の値でも負の値でも0に向かって切り捨てられます。たとえば-12.9は-13ではなく-12になります。

Javaでround()メソッドを使ってdoubleをintに変換する

切り捨てではなく最も近い整数にしたい場合は、Math.round()を使います。引数がdoubleの場合、Math.round()の戻り値はlongです。変換先がintなら、結果を明示的にキャストします:(int) Math.round(value)。たとえば12.9は13に、12.3は12になります。

intへのキャストには、別途範囲に関する動作があります。丸めたlongがintの範囲外でも、intへの変換時にエラーは報告されません。結果はJavaの縮小変換規則に従います。結果がintの範囲を超える可能性がある場合は、値をlongのまま保持してください。

次の完全な例を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);
    }
}

提供された実行時出力では、Math.round()が13Lを返し、それを変換した結果がintの値13になることを確認できます。

JavaでintValue()メソッドを使ってdoubleをintに変換する

intValue()は、プリミティブ型のdoubleではなく、ラッパークラスDoubleのインスタンスメソッドです。Doubleオブジェクトに対して呼び出すと、intを取得できます。プリミティブ型のキャストと同様に、丸めるのではなく0に向かって切り捨てます。そのため、12.9を保持するDoubleから得られる値は12です。

構文はwrapper.intValue()です。次の例のように、プリミティブ型のdoubleを代入時にDoubleへボックス化できます。次の完全なプログラムを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);
    }
}

提供された実行時出力では、Double.intValue()が12.9に対して12を返すことを確認できます。

既存の数値を変換するのではなくテキストを解析する場合は、Javaで16進数文字列をintに変換する方法を参照してください。