Gradleとは何者?インストール方法〜使い方までわかりやすく解説
- 1.Javaのdouble型とは?
- 2.double型の最大値・最小値
- 3.double型の基本的な使い方
- 4.double型とint型の変換方法
- 5.double型とString型の変換方法
- 6.double型の大小比較方法
- 7.double型の表示形式の指定方法
Javaプログラミング学習をするうえで、「doble型の基本は?」と悩んでいる方も多いのではないでしょうか?
「double型で扱える最大値・最小値はどれくらい?」
「int型やString型をdouble型に変換する方法は?」
といった疑問に対して、本記事ではdouble型について初心者エンジニア向けに詳しく解説していきます。
※本記事で紹介するサンプルコードは、Java18で動作確認しています。
1.Javaのdouble型とは?
Javaのdouble型は、小数を扱える基本データ型のひとつで、64ビットの浮動小数点形式で表現されます。doubleは最も広い範囲の値を扱えます。
①浮動小数点型とは?
浮動小数点とは、コンピュータの数値表現のひとつで、数値を仮数部と指数部に分割して表現する方式です。
例えば、以下のように表現されます。
14725000 = 1.4725 × (10の7乗)
147.25 = 1.4725 × (10の2乗)
0.000014725 = 1.4725 × (10の-5乗)
この例では、1.4725が仮数部、10のべき乗が指数部を表しています。この表現方法により、限られたビット数で大きな値を表現できるのです。
②doubleとfloatの違い
double型と同様、float型も小数を扱うデータ型です。
double型が64ビットであったのに対して、float型は32ビットの浮動小数を表す基本データ型となります。
double型もfloat型も浮動小数点の国際標準規格「IEEE 754」に準拠しており、32ビットのfloat型では、符号が1ビット、指数が8ビット、仮数が23ビット。
64ビットのdouble型では、符号が1ビット、指数が11ビット、仮数が52ビットとなっています。
③doubleとDoubleの違い
doubleはJavaの基本データ型ですが、Doubleはクラスを表します。
Doubleクラスを使う例は、次のような時です。
・valueOfやparseDoubleなどDoubleが持つメソッドを使う場合
・値がnullの場合
単純に数値を保持するときはdouble、メソッドを使う場合はDoubleのような使い分けをするのがよいでしょう。
2.double型の最大値・最小値
Javaでdouble型の最大値・最小値を表す定数は、DoubleクラスのMAX_VALUEとMIN_VALUEです。
MAX_VALUE定数とMIN_VALUE定数を使用したサンプルコードで確認してみましょう。
public class App {
public static void main(String[] args) {
double dblmax = Double.MAX_VALUE;
double dblmin = Double.MIN_VALUE;
//桁数指定
System.out.println(dblmax);
System.out.println(dblmin);
}
}
実行結果
1.7976931348623157E308
4.9E-324
このとき、MIN_VALUEは負の最小値ではなく、0に最も近い正の数を表しています。ですので、double型の範囲は、“-MAX_VALUE 〜 MAX_VALUE”ということになります。
3.double型の基本的な使い方
この章では、double型の基本的な使い方について紹介します。
①初期化
変数の初期化とは、変数の宣言と同時に変数に値を代入することです。
書式は以下の通りです。
データ型 変数名 = 値;
サンプルコードで確認しましょう。
double dbl = 123456789;
初期化することで、変数に値が代入されていないのに変数を参照してしまう、といったバグを防止します。
②doubleのリテラルの書き方
double型変数へ代入できるリテラルは、以下の形式で書きます。
・10進数(整数、小数、指数)
・2進数(0b始まり、整数)
・8進数(0始まり、整数)
・16進数(0x始まり、整数)
public class App {
public static void main(String[] args) {
//10進数の整数
double dbl1 = 147;
//10進数の小数点あり数字
double dbl2 = 1.47;
//10進数の指数表記
double dbl3 = 1.47E2;
//2進数
double dbl4 = 0b10010011;
//8進数
double dbl5 = 0223;
//16進数
double dbl6 = 0x93;
System.out.println(dbl1);
System.out.println(dbl2);
System.out.println(dbl3);
System.out.println(dbl4);
System.out.println(dbl5);
System.out.println(dbl6);
}
}
実行結果:
147.0
1.47
147.0
147.0
147.0
147.0
doubleは指数表現も利用できます。1.47E2は、1.47×10^2という意味です。
③double型の四則演算
doubleを使った四則演算は算術演算子の”+、-、*、/”を使用します。余りを求めるときは”%”を使います。
サンプルコードで確認してみましょう。
public class App {
public static void main(String[] args) {
double x = 7;
double y = 4;
//足し算
System.out.println(x + y);
//引き算
System.out.println(x - y);
//掛け算
System.out.println(x * y);
//割り算
System.out.println(x / y);
//余り
System.out.println(x % y);
}
}
実行結果:
11.0
3.0
28.0
1.75
3.0
4.double型とint型の変換方法
この章では、double型を他のデータ型に変換する方法について見ていきましょう。
①double型からint型への変換
double型の値をint型に代入する場合には、明示的なキャストが必要です。
サンプルコードで解説します。
public class App {
public static void main(String[] args) {
double dbl1 = 3.6;
int i1 = (int)dbl1;
System.out.println(i1);
}
}
実行結果:
3
intは整数を扱うデータ型のため、”3.6”をint型に代入すると、小数点以下が切り捨てられ”3”になりました。
②int型からdouble型への変換
Int型の値をdouble型に代入する場合は、暗黙的な型変換が行われるので、型変換を記述する必要はありません。
ですが、ここでは型キャストを使用する方法と、Doubleラッパークラスを使用する方法を説明します。
public class App {
public static void main(String[] args) {
int i = 369;
//暗黙的に変換
double dbl1 = i;
//型キャストを利用して変換
double dbl2 = (double)i;
//Doubleラッパークラスでdoubleに変換
double dbl3 = Double.valueOf(i);
System.out.println(dbl1);
System.out.println(dbl2);
System.out.println(dbl3);
}
}
実行結果:
369.0
369.0
369.0
どの方法でもdouble型に変換されているのがわかりますね。
5.double型とString型の変換方法
ここでは、double型とString型の変換方法について説明します。
①double型からString型への変換
double型をString型に変換するには、StringクラスのvalueOfメソッドを使用します。
サンプルコードで確認してみましょう。
public class App {
public static void main(String[] args) {
double dbl1 = 2.58;
//String型に変換
String str1 = String.valueOf(dbl1);
System.out.println(str1);
}
}
実行結果:
2.58
valueOfメソッドの引数に、変換したい変数を記述するだけで完了です。
②String型からdouble型への変換
逆に、String型からdouble型に変換するには、DoubleクラスのparseDoubleメソッドを使用します。
サンプルコードは次の通りです。
public class App {
public static void main(String[] args) {
String str1 = "2.58";
//double型に変換
double dbl1 = Double.parseDouble(str1);
System.out.println(dbl1);
}
}
実行結果:
2.58
parseDoubleメソッドの引数にString型の変数を指定するだけなので簡単ですね。ただし、str1がnullまたは数値として解析できない文字列の場合、変換できません。
コンパイルは通りますが、実行すると、”NullPointerException”または、”NumberFormatException”という例外が発生するので注意が必要です。
6.double型の大小比較方法
Javaでdouble型の大小比較するメソッドは、compareです。
compare(d1,d2)のように、2つのdoubleを引数として渡して、それらを比較し、結果を返します。
サンプルコードで確認してみましょう。
public class App {
public static void main(String[] args) {
double dbl1 = 147;
double dbl2 = 258;
double dbl3 = 147;
System.out.println(Double.compare(dbl1, dbl2));
System.out.println(Double.compare(dbl1, dbl3));
System.out.println(Double.compare(dbl2, dbl3));
}
}
実行結果
-1
0
1
compareメソッドの戻り値は以下の通りです。
・1番目の引数が2番目の引数より小さい場合:-1
・2つの引数が等しい場合:0
・1番目の引数が2番目の引数より大きい場合:1
7.double型の表示形式の指定方法
この章では、double型の切り捨て方法や四捨五入、桁数指定方法を見ていきましょう。
①double型の切り捨て
Javaで小数点の切り捨てを行うには、Mathクラスのfloorメソッドを使用します。
サンプルコードで確認しましょう。
public class App {
public static void main(String[] args) {
double dbl1 = 14.723;
//切り捨て
System.out.println(Math.floor(dbl1));
}
}
実行結果:
14.0
実行結果から、14.723の小数点が切り捨てられ、14.0になったことがわかりますね。
②double型の四捨五入
Javaで四捨五入を行うには、Mathクラスのroundメソッドを使用します。
サンプルコードを見てみましょう。
public class App {
public static void main(String[] args) {
double dbl1 = 14.7876;
//小数点第1位を四捨五入
System.out.println(Math.round(dbl1));
//小数点第2位を四捨五入
System.out.println(Math.round(dbl1*10.0)/10.0);
//小数点第4位を四捨五入
System.out.println(Math.round(dbl1*1000.0)/1000.0);
}
}
実行結果:
15
14.8
14.788
小数点第2位を四捨五入する場合、以下の操作を行っています。
- 対象の値に10を掛ける (14.7876 * 10 = 147.876)
- Roundメソッドで小数点以下で四捨五入する。(147.876 → 148)
- 対象の値を10で割る (148 / 10 = 14.8)
③double型の桁数指定
小数点以下の桁数を指定し表示するには、String.formatメソッドを使用します。
サンプルコードで確認してみましょう。
public class App {
public static void main(String[] args) {
//2の平方根を求める
double dbl1 = Math.sqrt(2);
//そのまま表示
System.out.println(dbl1);
//小数点第2位までを表示
System.out.println(String.format("%.2f", dbl1));
//小数点第6位までを表示
System.out.println(String.format("%.6f", dbl1));
}
}
実行結果:
1.4142135623730951
1.41
1.414214