Wenn ich eine Zahl habe, die 100.000.000 ist, wie kann ich das als "100M" in einer Zeichenkette darstellen?
Nach meinem Wissen gibt es keine Bibliotheksunterstützung für Abkürzungsnummern, aber Sie können es leicht selbst tun:
%Vor%Das setzt natürlich voraus, dass Sie keine Zahl wie 1,234,567,89 verkürzen wollen. Wenn Sie tun , dann ist diese Frage ein Duplikat .
Dafür gibt es einen Algorithmus:
Sie benötigen eine Karte, die aussieht wie
%Vor%... und so weiter ...
1) Nimm die Zahl "num", berechne den Log10-Exponenten "ex" der Zahl und stoppe ihn.
Achtung
log10 (0) existiert nicht, also überprüfen Sie das die Nummer ist nicht 0 und seit es macht keinen Sinn, etwas auszugeben wie 20="2 ten" sollten Sie zurückkehren die Zahl wie sie ist, wenn sie kleiner ist als 100!
2) Jetzt iterieren Sie durch die Schlüssel der obigen Hash-Tabelle und schauen Sie, ob ein Schlüssel übereinstimmt, wenn Sie nicht den Schlüssel nehmen, der kleiner als der Exponent "ex" ist.
3) Aktualisieren Sie "ex" auf diesen Schlüssel!
4) Formatieren Sie nun die Nummer wie
num = num / pow (10, ex)
(!! ex ist ein Schlüssel der Hash-Map !!)
5) Jetzt können Sie die Zahl auf eine bestimmte Genauigkeit runden und num + yourHash[ex]
Ein Beispiel:
%Vor%Hier ist meine Lösung, um es ein wenig allgemeiner zu machen:
%Vor%Tags und Links java numbers number-formatting