今回の問題にチャレンジして、理解を深めましょう。
問題
次のプログラムを実行した場合、出力として正しいものを選んでください。
public class Main {
public static void main(String[] args) {
int a = 7;
int b = 2;
double result = a / b;
System.out.println(result);
}
}
選択肢
- A. 3.5
- B. 3.0
- C. コンパイルエラー
- D. 実行時エラー
答えと解説
回答を見る
答え
B. 3.0
解説
基本説明:
このプログラムでは、2つの整数、a
とb
の除算が行われています。結果は整数除算により求められます。整数同士の除算の結果は、整数型として評価され、余りは切り捨てられます。
なお、計算結果の格納先である変数result
はdouble
型ですが、a / b
の計算結果はまず整数として評価されるため、実際には3として保存されます。
誤答理由:
もし選択肢Aを選んだ場合、この誤りの原因は整数除算と浮動小数点除算の区別を見落としたためです。両方が整数であれば、Javaでは常に整数除算が行われます。
その場合、結果は小数部が切り捨てられ、3.5
ではなく3.0
となります。
つまずきポイント:
初心者がつまずきやすい点として、型の影響を受ける計算の結果に気づかない場合があります。コンソールに表示される結果が浮動小数点型の数値である場合、計算自体が浮動小数点演算であると誤解することがあります。
そのため計算の前に型を確認し、必要であればキャスト(例えば(double) a / b
)を施すことを心掛けましょう。
発展知識:
Javaの除算において、型変換を行う方法がいくつかあります。最も一般的なのがキャスト操作です。キャストを使えば、任意の場所で型を変換できます。例えば、(double) a / b
とすれば、計算は浮動小数点演算となり正確な小数部が得られます。
また、Javaでは、小数点を伴う数を明示することの利便性も意識すると良いでしょう。