Javaコラム Javaエンジニアのためのお役立ちコラム

Java

Javaのdouble型とは?float型とdouble型の形式・値の範囲や型変換

2020年10月25日
SE
Javaのdoubleとはどのような型でしょうか。
PM
基本の数値型の中で最も広い範囲の数を表せるのがdouble型です。

Javaの数値型の種類


Javaの基本型のうち、数値を表す型には、整数を扱うbyte、short、int、longと、実数を扱うfloat、doubleがあります。

それぞれの型は、何バイトで保持するかというサイズが決まっていて、サイズによって表現可能な値の範囲が決まります。各型のサイズと値の範囲を次の表にまとめました。

値の種類 バイト数 値の範囲
byte 整数 1 -128~127
short 整数 2 -32768~32767
int 整数 4 -2147483648~2147483647
long 整数 8 -9223372036854775808~9223372036854775807
float 実数 4 約±3.4×(10の38乗)~約±1.4×(10の-45乗)
double 実数 8 約±1.8×(10の308乗)~約±4.9×(10の-324乗)

Javaのdouble型とは?

基本の数値型の中で最も広い範囲の数を表せるのがdouble型です。double型は8バイトの浮動小数点形式で表現されます。以下では、Javaのdouble型について詳しく説明していきます。

浮動小数点型とは?

浮動小数点型は、数値を仮数部と指数部に分けた表現形式です。

例えば、1234の値を持つ大きさの異なる数値は、次のように表せます。

ここで、1.234の部分が仮数部、指数部は10のべき数を表し、それぞれ9、1、-3となります。このような形式により、限られたビット数で、0に近い値から大きな値まで、広い範囲を表現できます。

float型とdouble型の形式

Javaのfloat型とdouble型は、IEEE754という国際規格の形式を用いています。floatは単精度、doubleは倍精度浮動小数点と呼ばれます。

32ビット(4バイト)のfloat型では、符号が1ビット、指数が8ビット、仮数が23ビットです。64ビット(8バイト)のdouble型は、符号が1ビット、指数が11ビット、仮数が52ビットです。

double型の最大値と最小値を表す定数

Javaでdouble型の範囲を表す定数は、DoubleクラスのMAX_VALUEとMIN_VALUEです。

これらを表示するJavaプログラムの例を示します。

実行結果は次のようになります。

ここでMIN_VALUEは負の最小値ではなく、最も0に近い正の数を表しています。負の値の範囲は、-MAX_VALUE~-MIN_VALUEとなります。

小数の表示形式を指定する方法

double型変数の値を出力するとき、桁数を指定するためにStringクラスのformatメソッドを利用できます。書式%fは、double型の値を10進数として表示します。小数点以下はデフォルトで6桁です。%.4fのようにピリオドの後に桁数を指定できます。

書式%eは、double型の値を指数表示で示します。この場合も、%.4eのように小数点以下の桁数を指定できます。

formatメソッドを使ったJavaコード例を示します。

実行結果は次のようになりました。最終桁は、四捨五入された値となります。

doubleとintの型変換

Javaの異なる数値型間の型変換では、変換後の型が変換前の型より大きい場合には、暗黙的な型変換が行われます。基本数値型の中でdouble型は最も広範囲の値を扱えるため、他の型からdoubleへの変換では暗黙的な型変換が行われます。

int型とdouble型の代入

int型の値をdouble型に代入する場合、暗黙的な型変換が行われるので、型変換を記述する必要はありません。double型の値をint型に代入する場合には、明示的なキャスト必要です。

次のJavaコード例を用いて説明します。

実行結果は次のようになります。

double型をint型に代入するために、”(int)d” のように、型変換を指定しています。これを書かない場合には、コンパイルエラーが発生します。小数点以下の値は、変換時に切り捨てられます。int型変数aをdouble型変数dへ代入する際には、型変換の記述は不要です。

演算オペランドの型変換

整数オペランドの演算結果を小数で得たい場合があります。主な例は、整数同士の割り算を行う場合です。

次のJavaコード例を用いて説明します。

実行結果は次のようになります。

[1]では、int同士の除算が実行されて、66という結果が得られます。これを代入によりdouble型に変換するので、結果は66.0になります。[2]と[3]は、一方のオペランドがdouble型のため、doubleの除算が行われ、結果を小数値で得られます。

SE
float型とdouble型の形式や値の範囲や型変換の方法がよく理解できました。
PM
doubleは基本の数値型の中で最も広い範囲の値を扱う型なので、使い方を覚えておきましょう。

Javaのdouble型を使いこなそう

Javaの浮動小数点型doubleについて、値の範囲や表示形式、intとの型変換について説明しました。doubleは基本の数値型の中で、最も広い範囲の値を扱う型です。

数値計算を行うプログラムで、整数型の範囲におさまらない大きな数を扱う場合や、小数値を扱う場合に、double型が役立ちます。値の範囲や桁数を意識しながら、数値計算を試してみて下さい。


Javaでのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

recommended

Categories

Tags