【Java】double型の値が整数の場合に小数点を表示しない方法
概要
帳票出力の実装時に「double型の値が整数の場合、小数点を表示しない」という仕様がありました。
調べるのに少し時間がかかったため、備忘録として残しておきます。
(個人的には小数点以下を常に固定幅で表示するほうが好みですが…)
ソース
code:format_sample.java
import java.util.*;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) throws Exception {
Double[] p_values = new Double[] {1.2345, 1.010, 1.0, 0.0};
System.out.println("デフォルト");
for (double p_value : p_values) {
System.out.println(String.valueOf(p_value));
}
System.out.println("");
DecimalFormat p_df = new DecimalFormat("0.###");
System.out.println("フォーマット");
for (double p_value : p_values) {
System.out.println(p_df.format(p_value));
}
System.out.println("");
}
}
実行結果
デフォルト
1.2345
1.01
1.0
0.0
フォーマット
1.234
1.01
1
0
解説
数値フォーマットには DecimalFormat クラスを使用します。
コンストラクタに渡すパターン文字列によって出力形式を制御できます。
例: "0.###"
小数点以下を最大3桁まで表示する
小数点以下の末尾の 0 は表示されない
整数値の場合、小数点は表示されない
table:特殊パターン文字
記号 位置 意味
0 Number 数字(必ず表示される)
# Number 数字(0 の場合は表示されない)
. Number 小数点(または通貨区切りの小数点記号)
参考