我想在我的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);
我应该使用什么模式?
答案 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类,它可以表示示例中的数字。