Java | 「NaN」「Infinity」など特殊値

Java Java
スポンサーリンク

Javaの特殊値とは?

Javaでは、浮動小数点型(floatdouble)に以下の特殊値が存在します:

特殊値説明生成例
Double.POSITIVE_INFINITY正の無限大1.0 / 0.0
Double.NEGATIVE_INFINITY負の無限大-1.0 / 0.0
Double.NaN数値ではない(未定義)0.0 / 0.0Math.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 == NaNfalse になるので注意!

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.0InfinityDouble.isInfinite()
-1.0 / 0.0-InfinityDouble.isInfinite()
0.0 / 0.0NaNDouble.isNaN()
Math.sqrt(-1)NaNDouble.isNaN()

タイトルとURLをコピーしました