Javaの特殊値とは?
Javaでは、浮動小数点型(floatやdouble)に以下の特殊値が存在します:
| 特殊値 | 説明 | 生成例 |
|---|---|---|
Double.POSITIVE_INFINITY | 正の無限大 | 1.0 / 0.0 |
Double.NEGATIVE_INFINITY | 負の無限大 | -1.0 / 0.0 |
Double.NaN | 数値ではない(未定義) | 0.0 / 0.0 や Math.sqrt(-1) |
これらの値は演算結果として現れることがあり、Double.isNaN() や Double.isInfinite() で判定できます。
Javaの「NaN」や「Infinity」は、浮動小数点演算でよく登場する特殊な値です。初心者向けに、図解的なイメージとコード例でわかりやすく解説します。
1. 「Infinity(無限大)」とは?
✅ どうやって出るの?
ゼロで割ったときに出ます(整数では例外になりますが、double型では無限大になります)。
public class InfinityExample {
public static void main(String[] args) {
double posInf = 1.0 / 0.0;
double negInf = -1.0 / 0.0;
System.out.println("正の無限大: " + posInf); // Infinity
System.out.println("負の無限大: " + negInf); // -Infinity
}
}
Java🧠 ポイント
double型でゼロ除算すると例外は出ず、Infinityになります。Double.isInfinite(value)で判定できます。
2. 「NaN(Not-a-Number)」とは?
✅ どうやって出るの?
意味のない計算(例:0.0 / 0.0 や √-1)をすると出ます。
public class NaNExample {
public static void main(String[] args) {
double nan1 = 0.0 / 0.0;
double nan2 = Math.sqrt(-1);
System.out.println("NaNの例1: " + nan1); // NaN
System.out.println("NaNの例2: " + nan2); // NaN
}
}
Java🧠 ポイント
NaNは「数値ではない」という意味。Double.isNaN(value)で判定できます。NaN == NaNはfalseになるので注意!
3. 判定方法まとめ
double value = 0.0 / 0.0;
if (Double.isNaN(value)) {
System.out.println("これはNaNです!");
}
double inf = 1.0 / 0.0;
if (Double.isInfinite(inf)) {
System.out.println("これは無限大です!");
}
Java図解イメージ(言葉で)
[演算] → [結果]
1.0 / 0.0 → Infinity(正の無限)
-1.0 / 0.0 → -Infinity(負の無限)
0.0 / 0.0 → NaN(意味不明)
Math.sqrt(-1)→ NaN(定義できない)

まとめ
| 演算例 | 結果 | 判定方法 |
|---|---|---|
1.0 / 0.0 | Infinity | Double.isInfinite() |
-1.0 / 0.0 | -Infinity | Double.isInfinite() |
0.0 / 0.0 | NaN | Double.isNaN() |
Math.sqrt(-1) | NaN | Double.isNaN() |


