【问题标题】:Java DecimalFormat, is it possible grouping in fraction part?Java DecimalFormat,是否可以在小数部分分组?
【发布时间】:2013-04-29 08:02:21
【问题描述】:

我需要打印少量数字(直方图上的百分比),但 java.text.DecimalFormat 做了一些奇怪的事情。对于:

System.out.println((new DecimalFormat("#,##0.######")).format(123456.000123));
System.out.println((new DecimalFormat("#,##0.######")).format(0.000123));
System.out.println((new DecimalFormat("#,##0.###x###x###x###")).format(0.001));

我明白了:

123,456.000123
0.000123
0.001xxx

似乎java.text.DecimalFormat 仅用于格式化货币...

是否可以使用java.text.DecimalFormat 进行小数分组?

或者建议任何其他格式库...

我期待这样或类似的:

GoodFormater("0.123456") === "0.123'456"

【问题讨论】:

  • 您希望以上几行的输出是什么?
  • @Keppil 我更新问题。
  • 如果有任何反对意见,请描述原因!!
  • DecimalFormat 不支持小数部分的分隔符。

标签: java floating-point decimalformat


【解决方案1】:

老实说,我没有看到任何像您所说的那样格式化的小数,这可能是现有格式化程序不支持它的原因之一。我也想知道你为什么要格式化小数点(只是为了满足我的好奇心)。

但我会做这样的事情,

1.) 将整数和小数分开。 (123123.789789转123123和789789)

2.) 分别格式化它们。 (123,123 和 789,789)

3.) 将它们与 . 字符连接并创建所需的输出 (123,123.789,789)。

这是一些定制的工作,但我个人认为这比从头开始写东西要好。

【讨论】:

  • 那行不通。小数部分需要从右边开始分组,整数部分从左边开始。
【解决方案2】:

您引用的 Javadoc 似乎非常清楚,分组只发生在小数点之前。

【讨论】:

  • 你能推荐任何其他库用于小数部分分组吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
  • 2018-07-26
  • 1970-01-01
  • 2012-05-13
  • 2017-01-20
  • 2013-08-24
  • 2016-01-26
相关资源
最近更新 更多