使用DecimalFormat Grouping java时删除最后一个分组分隔符

时间:2014-08-12 18:25:09

标签: java android formatting string-formatting decimalformat

我想在我的android计算器应用中格式化冗长的双数字 2个问题...... 首先,我想启用3分组,因此1200将显示1,200 。但对于1000这样的数字,我得到的是1,
我怎样才能获得1,000的结果?

另一个问题是我希望结果最多包含25个整数位和4个小数位数......但即使我将Decimalformat最大值设置为25,在整数个数超过18之后,数字也会变为零。例如我想要的是什么 1,111,111,111,111,111,111,111,111
但我得到了 1,111,111,111,111,111,110,000,000,
这是代码

 DecimalFormat df = new DecimalFormat();
    df.setMaximumFractionDigits(4);
    df.setMaximumIntegerDigits(25);
    df.setGroupingUsed(true);
    df.setGroupingSize(3);
    String formatted = df.format(mResultBeforeFormatting);

我应该使用什么模式?

2 个答案:

答案 0 :(得分:1)

好的,对于像我这样面对这个问题的人 对于第一部分最佳模式是

 DecimalFormat df = new DecimalFormat("###,##0.####");

对于第二个问题,因为“x-code”注意到它没有使用double的希望。应该尝试使用BigDecimal

答案 1 :(得分:0)

我在StackOverflow上找到了问题的两个部分的答案。

  

首先,我想启用3分组

Here are several solutions分组问题。

  

另一个问题是我希望结果最多包含25个整数

在这种情况下,真正发生的是Java doubles can't represent 25 decimal digits

对于这个问题,您可能需要查看BigDecimal类,它可以表示示例中的数字。