感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Javaのdouble型、float型。浮動小数点数とは。

<スポンサーリンク>

前回の記事では整数について扱ったが、今回は浮動小数点数について。

Javaは実数を表す型として、floatとdoubleを提供している。
実数とは、プラスマイナス・0・整数・分数・小数、有理数やルートや円周率などの無理数全てのこと。

整数はlongとかint型で表現していたけれど、小数点を含む数を扱いたい場合はdoubleを使うことになる。
たとえば以下のように、intやlongに小数を含んだ浮動小数リテラルを代入しようとすると、コンパイルエラーになる。

int hoge = 100.57; //コンパイルエラー
long fuga = 30.746; //コンパイルエラー

浮動小数点は英語で「floating point」といい、実数のJavaの呼び方みたいなもの。
浮動小数点型はfloatとdoubleがあり、floatは32ビット長、doubleは64ビット長のデータを扱う。
floatとdoubleでは、基本的にはdoubleを使うのが慣例だ。わざわざ精度の低いfloatを使う理由がないためである。

浮動小数点数には特別な値がある。
・POSITIVE_INFINITY(正の無限大)
・NEGATIVE_INFINITY(負の無限大)
・NaN(Not a Number)
である。

doubleやfloatは、以下のように「0除算の数」や無限大、NaNを表現することができる。

package kiso;

public class Seisu {
	public static void main(String[] args) {
		//浮動小数点
		double positiveInfinity = 1.0 / 0.0;
		double negativeInfinity = -1.0 / 0.0;

		System.out.println(positiveInfinity); //Infinity
		System.out.println(negativeInfinity); //-Infinity

		double pi = Double.POSITIVE_INFINITY;
		double ni = Double.NEGATIVE_INFINITY;
		double nan = Double.NaN;

		System.out.println(pi); //Infinity
		System.out.println(ni); //-Infinity
		System.out.println(nan); //NaN

	}
}

参考にしたのは、同じに「パーフェクトJava

パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)

パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)

Javaのdoubleとlongの違いがわからない」なんて人がもしいたら、必ず買って読むべきだと思う。