Java:格式化数字(以百万为单位)

2022-09-04 06:39:53

有没有办法使用DecimalFormat(或其他一些标准格式化程序)来格式化数字,如下所示:

1,000,000 => 1.00M

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中。


答案 1
String.format("%.2fM", theNumber/ 1000000.0);

有关更多信息,请参阅 String.format javadocs


答案 2

请注意,如果您有 ,则可以使用以下方法:BigDecimalmovePointLeft

new DecimalFormat("#.00").format(value.movePointLeft(6));

推荐