【发布时间】:2010-10-06 11:28:31
【问题描述】:
有没有办法使用 DecimalFormat(或其他一些标准格式化程序)来像这样格式化数字:
1,000,000 => 100 万
1,234,567 => 123 万
1,234,567,890 => 1234.57M
基本上将某个数字除以 100 万,保留 2 个小数位,并在末尾打一个“M”。我考虑过创建一个新的 NumberFormat 子类,但它看起来比我想象的要复杂。
我正在编写一个具有如下格式方法的 API:
public String format(double value, Unit unit); // Unit is an enum
在内部,我将 Unit 对象映射到 NumberFormatters。实现是这样的:
public String format(double value, Unit unit)
{
NumberFormatter formatter = formatters.get(unit);
return formatter.format(value);
}
请注意,正因为如此,我不能指望客户端除以 100 万,而且我不能只使用 String.format() 而不将其包装在 NumberFormatter 中。
【问题讨论】:
-
你想只处理 M(ega) 还是 (G)iga、(T)era 等?
-
它实际上代表证券的交易量,所以它是 M(illions),可能是 B(illions),但我会很高兴只用 M。
-
This related question 最近受到了很多关注(由于赏金)。
标签: java formatting numeric numericupdown