JavaのDoubleクラスの使い方を完全ガイド!初心者でもわかる浮動小数点数操作
Javaの基礎を体系的に整理しながら学習したい方には、 資格対策としても定評のある定番教材が参考になります。
Javaプログラマ Silver SE 17 教科書をAmazonで見る※ Amazon広告リンク
生徒
「先生、Javaで小数を扱うときにdoubleを使いますけど、Doubleクラスってどう違うんですか?」
先生
「doubleはプリミティブ型ですが、Doubleはそのラッパークラスでオブジェクトとして扱えるようになっています。」
生徒
「オブジェクトになるとどんな便利なことができるんですか?」
先生
「文字列との変換やコレクションへの格納、定数や便利なメソッドの利用などが可能になります。基本から順番に見ていきましょう。」
1. java.langパッケージとDoubleクラスとは
Javaのjava.langパッケージは自動で読み込まれるため、特別なインポートなしで利用できます。その中のDoubleクラスは、プリミティブ型doubleをオブジェクト化するラッパークラスであり、浮動小数点数を安全に扱うための便利な機能が多数用意されています。
2. doubleとDoubleの違い
doubleは単純に小数を扱うためのプリミティブ型ですが、Doubleはオブジェクトとして扱えるため、メソッド呼び出しやコレクションでの利用が可能です。Java5以降ではオートボクシング機能により、doubleとDoubleの変換を自動で行ってくれます。
3. Doubleクラスの基本的な生成方法
DoubleオブジェクトはvalueOfメソッドやオートボクシングを使って生成します。newで生成することも可能ですが、効率の面からvalueOfの利用が推奨されます。
public class DoubleExample {
public static void main(String[] args) {
Double d1 = Double.valueOf(10.5);
Double d2 = 20.5; // オートボクシング
double primitive = d1; // アンボクシング
System.out.println("d1: " + d1);
System.out.println("d2: " + d2);
System.out.println("primitive: " + primitive);
}
}
d1: 10.5
d2: 20.5
primitive: 10.5
4. Doubleクラスの主なメソッド
Doubleクラスには小数を扱うための便利なメソッドが揃っています。代表的なものを以下にまとめます。
- parseDouble(String s):文字列をdouble型に変換する
- valueOf(String s):文字列をDoubleオブジェクトに変換する
- toString(double d):doubleを文字列に変換する
- isNaN():数値がNaNかどうかを判定する
- isInfinite():数値が無限大かどうかを判定する
- MAX_VALUE:最大の正の有限値
- MIN_VALUE:最小の正の非ゼロ値
5. 文字列と小数の変換
アプリケーション開発では文字列を小数に変換する場面が多くあります。その際に利用するのがDouble.parseDoubleです。逆に小数を文字列にしたい場合はDouble.toStringを使用します。
public class ConversionExample {
public static void main(String[] args) {
String str = "45.67";
double num = Double.parseDouble(str);
String text = Double.toString(num);
System.out.println("数値: " + num);
System.out.println("文字列: " + text);
}
}
数値: 45.67
文字列: 45.67
6. 特殊な値の扱い
Doubleクラスは浮動小数点演算における特殊な値を表現できます。例えば、ゼロで割った場合にはInfinity(無限大)が、定義できない計算ではNaN(Not a Number)が返されます。これらはプログラムが予期せぬ挙動をしないようにチェックするのに役立ちます。
public class SpecialValuesExample {
public static void main(String[] args) {
double a = 1.0 / 0;
double b = 0.0 / 0;
System.out.println("無限大: " + a);
System.out.println("NaN: " + b);
}
}
無限大: Infinity
NaN: NaN
7. 実践的な活用例
Doubleクラスは金融計算、科学技術計算、グラフ描画など、小数点以下を正確に扱う必要があるシーンで多用されます。また、ユーザー入力を数値に変換する、コレクションに格納する、外部ファイルやデータベースとのやり取りを行う際にも役立ちます。ただし、浮動小数点は誤差が発生するため、精度が重要な場合はBigDecimalクラスを使う方が望ましい場面もあります。