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