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に変換する方法を参照してください。