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

ryv*_*age 14 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));
Run Code Online (Sandbox Code Playgroud)

生产:

65.87
6,587.00 %
Run Code Online (Sandbox Code Playgroud)

但我希望它产生:

65.87
65.87 %
Run Code Online (Sandbox Code Playgroud)

Pop*_*ibo 26

使用单引号包围您的%:

DecimalFormat df2 = new DecimalFormat(" #,##0.00 '%'");
Run Code Online (Sandbox Code Playgroud)

  • @ryvantage来自JavaDoc(http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html) - `模式中的许多字符都是字面意思; 它们在解析期间匹配,并在格式化期间输出不变.另一方面,特殊字符代表其他字符,字符串或字符类.除非另有说明,否则必须引用它们,如果它们作为文字出现在前缀或后缀中 (3认同)

Mik*_*e B 6

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

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

产生

 65.87 %
Run Code Online (Sandbox Code Playgroud)