【Java】浮動小数点数のfloat型とdouble型の違いとは?

【Java】浮動小数点数のfloat型とdouble型の違いとは?

Javaの小数を扱う変数型のfloat型double型の違いについてまとめていきます。

float型とdouble型の違い

どちらの型も、浮動小数点数を表します。2つの型の違いとして、値の範囲が挙げられます。

float型は32ビット単精度浮動小数点数であることに対し、double型は64ビット倍精度浮動小数点数になります。よって、double型の方がより広い範囲の数を扱うことができます。

小数を扱う場合、昔では使われるメモリの大きさが限られていた場合にfloat型が採用されることがありましたが、現在では基本的には範囲が広いdouble型を使われることが多いです。

float型の変数を宣言する時は、末尾にfFを付けてfloat型であることを示す必要があります。

float型の変数宣言
1float num = 1.0f;

2つの型の範囲

2つの型の範囲をそれぞれ示します。

サイズ範囲
float32ビット(4バイト)\(\pm3.4028235\times10^{38}\) ~ \( \pm1.4\times10^{-45}\)
double64ビット(8バイト)\(\pm1.7976931348623157\times10^{308}\) ~ \( \pm4.9\times10^{-324}\)

2つの型を比べると、double型の方が取り扱う範囲が格段に広いことがわかります。

値の範囲を出力してみる

実際にそれぞれの値の範囲をサンプルコードで出力してみます。

DoubleFloatMaxMinTest.java
 1public class DoubleFloatMaxMinTest {
 2  public static void main(String[] args) {
 3    // double型の最大値と最小値
 4    System.out.println("double型の最大値:" + Double.MAX_VALUE);
 5    System.out.println("double型の最小値:" + Double.MIN_VALUE);
 6    // float型の最大値と最小値
 7    System.out.println("float型の最大値:" + Float.MAX_VALUE);
 8    System.out.println("float型の最小値:" + Float.MIN_VALUE);
 9  }
10}

実行結果が以下になります。

出力結果
1double型の最大値:1.7976931348623157E308
2double型の最小値:4.9E-324   
3float型の最大値:3.4028235E38
4float型の最小値:1.4E-45

先ほどの表と同じ結果が出力されました。


今回は今回はJavaの小数型の違いについてまとめました。以上で記事を終わりにします。

参考文献