Java の浮動小数点型プリミティブ・データタイプ
Java ではオブジェクトではない基本的なデータ型がいくつかあります。これを、プリミティブデータタイプ (primitive data types) といいます。
オブジェクトを生成するときは new というキーワードで作ります。しかし、プリミティブのデータタイプを使うときは、new を使う必要はありません。
浮動小数点を表す型として、次の2種類があります。
データ型 | サイズ | 意味 | 既定値 |
---|---|---|---|
float | 4 [byte] | 単精度浮動小数点型 IEEE 754 に準拠 | 0.f |
double | 8 [byte] | 倍精度浮動小数点型 IEEE 754 に準拠 | 0.0 |
この他、整数型として分類されているプリミティブデータタイプとしては char 型があります。char は整数型ですが文字を表します。文字を表すコードを整数値で保持しているために、文字も整数型になっています。 char 型については「Java の文字型 (char)」をみてください。
Java の浮動小数点型の既定値
Java の浮動小数点型の既定値は 0f (float)、 0.0 (double) として定義されています。 つまり、変数の初期化を行わない場合は、浮動小数点型の既定値は 0 になります。
Java の整数型変数の初期化
プリミティブデータタイプのローカル変数を使うときには、利用する前に初期化が必要です。初期化をしないままその変数を利用するコードパスがあると、コンパイル時にエラーとなります。
package com.keicode.java.test;
public class FloatTest {
public static void main(String[] args) {
float pi = 3.14f; // このように初期化が必要
double e = 2.718;
System.out.printf("pi = %f\n", pi); // pi = 3.140000
System.out.printf(" e = %f\n", e); // e = 2.718000
}
}
しかし、クラスのフィールドとする場合は明示的な初期化は不要です。
package com.keicode.java.test;
public class MyFloat {
float f;
public void printF() {
System.out.printf("f=%f", f);
}
}
こうして定義したMyFloat クラスのインスタンスを作成して printF() を呼ぶと f=0.000000 と出力されます。
Java の浮動小数点型の最大値と最小値
Float および Double データタイプラッパークラスには、最小値と最大値を表す定数として MIN_VALUE と MAX_VALUE が定義されています。 例えば float 型の最大値は Float.MAX_VALUE として取得できます。
public class TestApp {
public static void main(String[] args) {
System.out.println("* Float");
System.out.println(" Min: " + Float.MIN_VALUE);
System.out.println(" Max: " + Float.MAX_VALUE);
System.out.println("* Double");
System.out.println(" Min: " + Double.MIN_VALUE);
System.out.println(" Max: " + Double.MAX_VALUE);
}
}
この実行結果は次のようになります。
* Float
Min: 1.4E-45
Max: 3.4028235E38
* Double
Min: 4.9E-324
Max: 1.7976931348623157E308
以上、Java の浮動小数点型について説明しました。