【问题标题】:DecimalFormat not formatting a double having value equal to 0DecimalFormat 未格式化值为 0 的双精度数
【发布时间】:2018-06-14 00:06:46
【问题描述】:
我需要将双精度格式设置为两位小数,为此我使用 DecimalFormat 如下:
Double c = 12.01;
DecimalFormat df2 = new DecimalFormat("##.##");
System.out.println("c = "+df2.format(c));
它工作得非常好,除非双精度为 0(或 0.0、00.00 或 0.00)值。在这种情况下,它只是将双精度格式化为平面 0。
我在格式化中有什么遗漏的吗?
请建议。
【问题讨论】:
标签:
java
formatting
double
number-formatting
【解决方案1】:
是的。您可以使用 0 格式化元素而不是 # 涉及 0 填充,例如
Double c = 0.0d;
DecimalFormat df2 = new DecimalFormat("00.00");
System.out.println("c = "+df2.format(c));
如docs中提到的:
Symbol Location Localized? Meaning
0 Number Yes Digit
# Number Yes Digit, zero shows as absent
【解决方案2】:
尝试使用'##.00',因为#表示可选数字,而0表示强制数字