Java: Formatieren Sie die Nummer in Millionen

8

Gibt es eine Möglichkeit, DecimalFormat (oder einen anderen Standard-Formatierer) zu verwenden, um Zahlen wie folgt zu formatieren:

  

1.000.000 = & gt; 1.00M

     

1,234,567 = & gt; 1.23M

     

1,234,567,890 = & gt; 1234.57M

Grundsätzlich eine Zahl durch 1 Million teilen, 2 Dezimalstellen beibehalten und ein "M" am Ende schlagen. 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 mit einer Formatmethode, die folgendermaßen aussieht:

%Vor%

Intern ordne ich Unit-Objekte NumberFormatters zu. Die Implementierung ist in etwa so:

%Vor%

Beachten Sie, dass ich deshalb nicht erwarten kann, dass der Client durch 1 Million dividiert, und ich kann nicht einfach String.format () verwenden, ohne es in NumberFormatter einzubinden.

    
Outlaw Programmer 09.02.2009, 19:06
quelle

5 Antworten

17
%Vor%

Weitere Informationen finden Sie in der String.format javadocs .

    
jjnguy 09.02.2009, 19:21
quelle
4

Beachten Sie, dass Sie, wenn Sie BigDecimal haben, die Methode movePointLeft verwenden können:

%Vor%     
oxbow_lakes 09.02.2009 22:32
quelle
3

Hier ist eine Unterklasse von NumberFormat, die ich ausgepeitscht habe. Es sieht so aus, als ob es den Job erledigt, aber ich bin mir nicht ganz sicher, ob es der beste Weg ist:

%Vor%     
Outlaw Programmer 09.02.2009 19:18
quelle
3

Warum nicht einfach?

%Vor%     
toolkit 09.02.2009 19:27
quelle
0

Sehen Sie sich ChoiseFormat an.

>

Ein einfacherer Weg wäre die Verwendung eines Wrappers, der automatisch durch 1m geteilt wird.

    
sblundy 09.02.2009 19:11
quelle