浮動小数点リテラル 練習問題(10問)
プログラミング初心者向けに Javaの浮動小数点リテラル を理解するための練習問題10問を作り、回答と解説付きで紹介します。
問1
次のうち、Javaで正しい浮動小数点リテラルはどれ?
A: "3.14"
B: 3.14
C: 3,14
D: 3.14f
答え: B, D
解説:
"3.14"は文字列(String)で、数値ではない。3,14は Java ではカンマ区切りは使えない。3.14は double 型のリテラル。3.14fは float 型のリテラル。
問2
次の出力は何になる?
System.out.println(5.23e3);
Java答え: 5230.0
解説: 5.23e3 = 5.23 × 10³ = 5230。Java の println は小数点以下を表示するので 5230.0 になる。
問3
次のコードはコンパイルされるか?
float f = 3.14;
Java答え: コンパイルエラー
解説: 3.14 は double リテラルなので、float に代入するには末尾に f が必要。
float f = 3.14f; // 修正例
Java問4
次の値を正しく表す浮動小数点リテラルはどれ?
「0.0012」
A: 12e-3
B: 1.2e-3
C: 1.2e3
D: 0.12e-2
答え: B
解説: 1.2 × 10^-3 = 0.0012。
問5
次のコードの出力は?
double x = -2.5;
double y = 3.0;
System.out.println(x + y);
Java答え: 0.5
解説: -2.5 + 3.0 = 0.5。符号も含めて普通に計算できる。
問6
次のコードの出力は?
System.out.println(0.1 + 0.2);
Java答え: 0.30000000000000004(近似値)
解説: 浮動小数点は二進数で内部表現されるため、0.1や0.2は正確に表現できず、計算誤差が出る。
問7
次のうち、float 型に代入できるリテラルはどれ?
A: 3.5
B: 3.5f
C: 3.5F
D: 3.5d
答え: B, C
解説: float 型リテラルには末尾に f または F を付ける。3.5d は double 型リテラル。
問8
次のコードの出力は?
double a = 1_000_000.123_456;
System.out.println(a);
Java答え: 1000000.123456
解説: アンダースコア _ は桁を読みやすくするための記号で、数値の値には影響しない(Java7以降)。
問9
次のコードの出力は?
double d1 = 2.5e2;
double d2 = 3.1E-3;
System.out.println(d1);
System.out.println(d2);
Java答え:
250.0
0.0031
解説:
2.5e2= 2.5 × 10² = 250.03.1E-3= 3.1 × 10^-3 = 0.0031
問10
浮動小数点の誤差を考慮して 0.1 + 0.2 が 0.3 と等しいか判定する方法は?
A: 0.1 + 0.2 == 0.3
B: Math.abs((0.1 + 0.2) - 0.3) < 1e-9
答え: B
解説: 浮動小数点は丸め誤差があるため == で比較すると正しく判定できない場合がある。絶対値の差で比較するのが安全。
