【问题标题】:Remove the last grouping separator when using DecimalFormat Grouping java使用 DecimalFormat Grouping java 时删除最后一个分组分隔符
【发布时间】:2014-10-05 22:41:45
【问题描述】:

我想在我的 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);

我应该使用什么模式?

【问题讨论】:

  • 第一部分是正确的添加逗号。你为什么不把它拆分成,的数组呢?
  • 那不是干净的编码!已经用 java 类编写了数千行代码,所以我不会为这些东西自定义代码

标签: java android formatting string-formatting decimalformat


【解决方案1】:

好吧,对于像我这样面临这个问题的其他人来说 第一部分的最佳模式是

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

对于第二个问题,“x-code”指出它似乎没有希望使用 double 。应该尝试使用 BigDecimal

【讨论】:

    【解决方案2】:

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

    首先是我想启用按 3 分组

    Here are several solutions 分组问题。

    另一个问题是我想要最多 25 个整数的结果

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

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

    【讨论】:

    • 那么实际上分组这些答案要么不能解决这个问题,要么不使用本机 Java 类(自定义代码) 使用 BigDecimal 我认为你是对的
    猜你喜欢
    • 1970-01-01
    • 2013-01-17
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多