double 型の値をプログラムで保持したい。
基本データ型の「浮動小数点型」に分類されるものの1つで、64bit の単精度浮動小数値を変数に格納します。
double 型は浮動小数値を含むデータを扱います。
データ型 | サイズ | 値の範囲 |
---|---|---|
double | 8byte | ±4.9e-324〜±1.7976931348623157e+308 ※ |
※e-324 は 10 の -324 乗、e+308 は 10 の 308 乗を表します。
Java ソース中での浮動小数点リテラルは double 型の値となります。
無限小数のような実数は有限のbit 数で正確に値を表すことができないため、double 型でこのような値を保持する場合には 64bit の精度での近似値として表されます。
double 型では実数以外にも以下の特殊な値を扱うことができます。
値 | 意味 | 対応するリテラル | 発生例 |
---|---|---|---|
Double.MAX_VALUE | 表現可能な最大値 | 3.4028235e38 | double a=4.9E-324 |
Double.MIN_VALUE | 表現可能な最小値 | 1.4e-45 | double a=1.7976931348623157E308 |
Double.POSITIVE_INFINITY | 正の無限大 | Infinity | double a=1/0d |
Double.NEGATIVE_INFINITY | 負の無限大 | -Infinity | double a=-1/0d |
Double.NaN | 非数(Not a Number) | NaN | double a=0/0d |
特殊な浮動小数点値は標準の範囲外となる演算を行った場合に返されます。
データ型に double 型を指定し、変数名を宣言して使います。
double 変数名 ( = 初期値 );
浮動小数点のリテラルには指数を意味する "e"(または "E")を使用することができます。
この場合、数字に続いて "e"を入力して、その後ろに最初の数字に乗じる 10 の累乗を指定します。
double a = 0.1234e2d; // 0.1234×10^2 である 12.34 が格納される double b = 10e-4d; // 10×10^-4 である 0.0010 が格納される double c = 2.99792458e8d; // 光速 2.99792458×10^8
特殊な浮動小数点値である NaN は NaN を含む他の値と直接比較を行うことができません。
double a = Double.NaN; //NaN値の格納 if ( a == Double.NaN ){ System.out.println("この値は非数(NaN)です。"); }else{ System.out.println("この値は非数(NaN)ではありません。"); }
この処理結果は以下のようになります。
この値は非数(NaN)ではありません。
NaN は直接比較を行うことができず、この判定方法では常に false のルートを通ります。
そのため、NaN の判定をおこなう場合は特別なメソッドを使って判定を行います。
double a = Double.NaN; //NaN値の格納 if ( Double.isNaN( a ) ){ System.out.println("この値は非数(NaN)です。"); }else{ System.out.println("この値は非数(NaN)ではありません。"); }
この処理結果は以下のようになります。
この値は非数(NaN)です。
isNaN メソッドを使うことにより NaN を判定することができます