Javaで数値の精度(小数点以下の桁数)を扱う方法
Javaでは、String.formatメソッドを使うことで、小数点以下の桁数(精度)を自由に指定して数値を整形できます。この記事では、double型の値を指定した桁数でフォーマットして出力する方法を、サンプルコードと実行結果とともに解説します。
サンプルコード
import java.io.*;
import java.lang.*;
public class Demo{
public static void main(String[] args){
double my_val = 34.909;
System.out.println("34.909 をフォーマットした結果:");
System.out.println(String.format("%.7f", my_val));
double my_val_2 = 12.56;
System.out.println("12.56 をフォーマットした結果:");
System.out.println(String.format("%.9f", my_val_2));
}
}
実行結果
34.909 をフォーマットした結果: 34.9090000 12.56 をフォーマットした結果: 12.560000000
コードの解説
Demo クラスの main メソッド内で、まず double 型の変数 my_val に 34.909 を代入し、String.format("%.7f", ...) によって小数点以下7桁に整形して出力しています。同様に、別の double 型変数 my_val_2 に 12.56 を代入し、小数点以下9桁に整形してコンソールに表示しています。
ここで使われている書式指定子「%.7f」の「7」が小数点以下の桁数を表します。元の数値の桁数が指定より少ない場合は、不足分が「0」で埋められます。
補足:BigDecimal による高精度な処理
金額計算など、より厳密な精度管理が必要な場合は、java.math.BigDecimal クラスを使用するのが推奨されます。double 型は浮動小数点数のため微小な誤差が発生する可能性がありますが、BigDecimal なら任意精度の10進数演算が可能です。
import java.math.BigDecimal;
import java.math.RoundingMode;
public class PrecisionDemo {
public static void main(String[] args) {
BigDecimal value = new BigDecimal("34.909");
BigDecimal rounded = value.setScale(2, RoundingMode.HALF_UP);
System.out.println(rounded); // 出力:34.91
}
}
用途に応じて String.format による表示用の整形と、BigDecimal による計算用の高精度処理を使い分けることで、Java における数値の精度を適切に制御できます。
-
JavaでJTableの行ダブルクリックイベントを検出する方法
JTableは、複雑なデータ構造を表示するためのJComponentのサブクラスです。JTableはMVC(Model View Controller)デザインパターンに従って、データを行と列の形式で表示します。また、TableModelListener、TableColumnModelListener、ListSelectionListener、CellEditorListener、RowSorterListenerなどの各種リスナーインターフェースでイベントを処理できます。JTableのダブルクリックイベントを検出するには、MouseAdapterクラスまたはMouseListenerイン
-
Javaのイベント処理とは?イベント・イベントソース・イベントリスナーの基本をわかりやすく解説
JavaのGUIアプリケーションでは、マウスやキーボードによる操作、さらにボタン・チェックボックス・テキストフィールドなどの各種ユーザーコントロールとのやり取りが、すべて「イベント」として処理されます。これらのイベントを適切に扱うことで、Javaはイベント駆動プログラミング(Event-Driven Programming)として機能します。本記事では、Javaのイベント処理を支える基本的な仕組みと構成要素について詳しく解説します。 イベント処理を構成する3つの要素 Javaのイベント処理は、次の3つの要素によって成り立っています。 イベント(Events) イベントソース(Event So