導入
int と double を混ぜて計算したいことはよくあります。型が違う値を変換する「キャスト」を覚えると、割り算の切り捨て問題もコントロールできます。
説明
型の変換には2種類あります。
public class Main {
public static void main(String[] args) {
int i = 10;
double d = i; // int → double は自動(値が失われないので安全)
System.out.println(d); // 10.0
double pi = 3.9;
int n = (int) pi; // double → int は明示的にキャストが必要
System.out.println(n); // 3(小数点以下は切り捨て・四捨五入ではない)
}
}
- 自動変換(拡大変換) …
int → doubleのように「情報が失われない」向きの変換は、書くだけで自動で行われます。 - キャスト(縮小変換) …
double → intのように「情報が失われる」向きは、(int)のように 変換先の型をかっこで前置 して、プログラマが明示します。小数点以下は切り捨てられます(四捨五入ではありません)。
整数どうしの割り算を小数で得たいときも、キャストが使えます。
public class Main {
public static void main(String[] args) {
int a = 7, b = 2;
System.out.println(a / b); // 3
System.out.println((double) a / b); // 3.5(a を double 化してから割る)
}
}
やってみよう
下のエディタで (double) a / b と (double)(a / b) の結果の違いを比べてみましょう(かっこの位置で結果が変わります)。
演習
int の total(45)と int の count(2)から、平均を小数で 求めて表示してください(結果は 22.5)。
ヒント1を見る
total / count のままだと整数の割り算になって 22 になってしまいます。
ヒント2を見る
(double) total / count のように、割る前に片方を double 化します。