通过移动小数来停止带有百分号的DecimalFormat

时间:2014-01-14 20:17:07

标签: java decimalformat

有没有办法阻止DecimalFormat对象自动将小数位移到右边两个位置?

此代码:

double d = 65.87;
DecimalFormat df1 = new DecimalFormat(" #,##0.00");
DecimalFormat df2 = new DecimalFormat(" #,##0.00 %");
System.out.println(df1.format(d));
System.out.println(df2.format(d));

产生

65.87
6,587.00 %

但我希望它能产生:

65.87
65.87 %

3 个答案:

答案 0 :(得分:23)

用单引号包围你的%:

DecimalFormat df2 = new DecimalFormat(" #,##0.00 '%'");

答案 1 :(得分:6)

默认情况下,在格式字符串中使用%时,要格式化的值将首先乘以100.您可以使用DecimalFormat.setMultiplier()方法将乘数更改为1。

double d = 65.87;
DecimalFormat df2 = new DecimalFormat(" #,##0.00 %");
df2.setMultiplier(1);
System.out.println(df2.format(d));

产生

 65.87 %

答案 2 :(得分:0)

我就是这样做的:

// your double in percentage:
double percentage = 0.6587;

// how I get the number in as many decimal places as I need:
double doub = (100*10^n*percentage);
System.out.println("TEST:   " + doub/10^n + "%");

其中 n 是您需要的小数位数。

我知道这不是最干净的方式,但它有效。

希望这有帮助。