使用十进制格式显示填充零

2022-09-01 06:30:41

我正在使用DecimalFormat将双精度格式设置为2个小数位,如下所示:

DecimalFormat dec = new DecimalFormat("#.##");
double rawPercent = ( (double)(count.getCount().intValue()) / 
                            (double)(total.intValue()) ) * 100.00;
double percentage = Double.valueOf(dec.format(rawPercent));

它有效,但是如果我有一个像20这样的数字,它会给我这个:

20.0

我想要这个:

20.00

有什么建议吗?


答案 1

类用于将十进制数值转换为字符串。在您的示例中,您将来自 format( ) 方法的 String 放回双精度变量中。如果随后输出该双精度变量,则不会看到格式化的字符串。请参阅下面的代码示例及其输出:

int count = 10;
int total = 20;
DecimalFormat dec = new DecimalFormat("#.00");
double rawPercent = ( (double)(count) / (double)(total) ) * 100.00;

double percentage = Double.valueOf(dec.format(rawPercent));

System.out.println("DF Version: " + dec.format(rawPercent));
System.out.println("double version: " + percentage);

哪些输出:

"DF Version: 50.00"
"double version: 50.0"

答案 2

试试这个代码:

BigDecimal decimal = new BigDecimal("100.25");

BigDecimal decimal2 = new BigDecimal("1000.70");

BigDecimal decimal3 = new BigDecimal("10000.00");

DecimalFormat format = new DecimalFormat("###,###,###,###,###.##");

format.setDecimalSeparatorAlwaysShown(true);

format.setMinimumFractionDigits(2);

System.out.println(format.format(decimal));

System.out.println(format.format(decimal2));

System.out.println(format.format(decimal3));

结果:

100.25

1,000.70

10,000.00

推荐