【Java】double型の値が整数の場合、小数点を表示しないようにする
概要
帳票出力の実装時に、「double型の値が整数の場合に、小数点を表示しない」と言う仕様があり、答えにたどり着くのに苦戦したので、メモします。
個人的には、小数点以下は常に固定幅が好みですが…
ソース
code:format.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クラスを使う。
DecimalFormatのコンストラクタに、フォーマットするパターンを指定する。
上記のソースで指定した"0.###"の場合、小数点以下を3桁まで表示し、小数点以下の末尾の0は非表示で、整数の場合は小数点を非表示となる。
table:特殊パターン文字
記号 位置 意味
0 Number 数字
# Number 数字。ゼロだと表示されない
. Number 数値桁区切り子または通貨桁区切り子
参考