Gibt es eine Möglichkeit DecimalFormat (oder ein anderes Standard-Formatierungs) zu Format Zahlen wie folgt zu verwenden:Java: Format Zahl in Millionen
1.000.000 => 1,00 M
1.234.567 => 1.23m
1234567890 => 1234.57M
Grundsätzlich gewisse Zahl von 1 Million Dividieren halten 2 Dezimalstellen, und schlug ein 'M' am Ende. Ich habe darüber nachgedacht, eine neue Unterklasse von NumberFormat zu erstellen, aber es sieht komplizierter aus als ich es mir vorgestellt habe.
Ich schreibe eine API, die ein Format Methode, die wie folgt aussieht:
public String format(double value, Unit unit); // Unit is an enum
Intern Ich bin Mapping-Einheit Objekte NumberFormatters. Die Umsetzung ist in etwa so:
public String format(double value, Unit unit)
{
NumberFormatter formatter = formatters.get(unit);
return formatter.format(value);
}
Beachten Sie, dass aus diesem Grunde, ich nicht der Kunde von 1 Million, teilen erwarten kann, und ich kann nicht nur String.format() verwenden, ohne sie in einer Verpackung NummerFormatter.
Wollen Sie nur M (ega) zu handhaben, oder auch (G) iga, (T) Ära , etc? –
Es stellt tatsächlich das Volumen einer Sicherheit dar, also ist es M (ilions) und möglicherweise B (ilions), aber ich werde mit gerade dem M. glücklich sein. –
[Diese in Verbindung stehende Frage] (http://stackoverflow.com/q/4753251/ 983430) hat in letzter Zeit viel Aufmerksamkeit bekommen (wegen einer Prämie). –