NaN、無限大 - 1

「こんにちは、アミーゴ!」

「今日は Java の興味深いことについてお話します。」

無限大

Java では、double型には、正の無限大負の無限大の特別な値があります。正の数を 0.0 で割ると正の無限大が得られ、負の数は負の無限大になります。

これらの概念は、特別な Double 定数によって表されます。

コード 説明
public static final double POSITIVE_INFINITY = 1.0 / 0.0;
正の無限大
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
負の無限大

「それで、本当に効果があるの?」

「はい。これを見てください。」

コード
double inf = Double.POSITIVE_INFINITY;
System.out.println(inf); // Infinity
System.out.println(inf + 1); // Infinity+1 == Infinity
System.out.println(inf + 10); // Infinity+10 == Infinity
System.out.println(inf * -1); // Equal to negative infinity
Double.NEGATIVE_INFINITY
画面出力:
Infinity
Infinity
Infinity
-Infinity

「それは本当にうまくいきます。そして、曖昧さがある場合は? たとえば、無限から無限を引く場合はどうでしょうか?」

「このために、Java には Not-a-Number ( NaN ) という別の概念があります。」

「いろいろな場面で使われます。」

1) 文字列は数値に変換されていますが、文字が含まれています。結果は NaN になります。

2)無限大から無限大を引いたもの。結果は NaN になります。

3)数値を期待しているにもかかわらず、未定義の結果が得られる他の多くの状況。

「それでは、Infinity と NaN を使用してどのような操作を実行できるのでしょうか?」

「NaN を使用すると、非常に簡単です。NaN を含む演算はすべて NaN になります。」

「そして、無限大を使用すると、次のことができます。」

表現 結果
n ÷ ±Infinity
0
±Infinity × ±Infinity
±無限大
±(something other than zero) ÷ 0
±無限大
Infinity + Infinity
無限大
±0 ÷ ±0
NaN
Infinity - Infinity
NaN
±Infinity ÷ ±Infinity
NaN
±Infinity × 0
NaN

「それは当然ですね。ありがとう、リシ」