knapp
Das Muster der Dezimalformat enthält positive und negative Submuster wie "#, ## 0,00; (## 0,00)":
/*** Erstellt von Shuai am 2016/7/11. */public class main {public static void main (String [] args) {// positiver Wert BigDecimal BigDecimal = BigDecimal.ValueOf (-122111515151515151.541666); // negativer Wert BigDecimal BigDecimal2 = BigDecimal.Valueof (1221115151515151.541666); String muster = "#, ## 0.00; (#, ## 0.00)"; Decimalformat DecimalFormat = new DecimalFormat (Muster); DecimalFormat.Format (BigDecimal); System.out.println (DecimalFormat.Format (BigDecimal)); System.out.print (DecimalFormat.format (BigDecimal2)); }}Ausgabe:
(12,211,151,515,151,54) 12,211.151.515.151,54
Jedes Untermuster besteht aus einem Präfix, einem numerischen Teil und einem Suffix. Zum Beispiel kann das obige positive und negative Muster nur unterschiedliche Präfixe und Suffixe aufweisen. Der numerische Teil nimmt standardmäßig ein positives Muster an, was bedeutet, dass "#, ## 0.0#; (#)" "#, ## 0.0#; (#, ## 0.0#)" entspricht. ; Das negative Muster danach ist optional und kann keine sein, wenn nicht, der negative Wert wird in der Standardform (das Präfix "in den meisten Regionen) angezeigt, wie -12,211.151.515.151,54 . Interessanterweise wird für 0 Werte das positive Muster genommen:
public class main {public static void main (String [] args) {BigDecimal BigDecimal = BigDecimal.ValueOf (-0.00); BigDecimal BigDecimal2 = BigDecimal.Valueof (0,00); String muster = "0,00; (0,00)"; Decimalformat DecimalFormat = new DecimalFormat (Muster); DecimalFormat.Format (BigDecimal); System.out.println (DecimalFormat.Format (BigDecimal)); System.out.print (DecimalFormat.format (BigDecimal2)); }}Ausgabe:
0,000,00
DecimalFormat kann Strings direkt analysieren:
System.out.print (DecimalFormat.Parse (",,, 1,515.115,26262", New Parseposition (0)));Ausgabe:
1515115.26262
Wie Sie sehen können, wird die methode decimalFormat.Parse automatisch entfernt . Zuvor sollte hier angemerkt werden, dass der erste Charakter der analysierten Zeichenfolge eine Zahl oder eine Nummer sein muss, ansonsten wird eine Ausnahme als Null ausgeworfen oder analysiert. Der zweite Parameter von Parse gibt die Position des ersten analysierten Zeichens an. Die obigen Beispielpositionen 0, 1, 2, 3 sind alle von 1 analysiert und 4, 5 sind alle von 5 analysiert, dh, wenn genommen , wird das Bit durch die Anzahl daneben gefüllt. Wenn es andere Zeichen gibt, außer und Zahlen vor Parse erscheinen , analysieren Sie Parse Parse Parse an die vorherige Ziffer dieses Charakters oder wenn andere Zeichen außer Zahlen nach Pares (einschließlich ) angezeigt werden, analysieren Sie Parse Parse Parse zur vorherigen Ziffer dieses Charakters.
Wenn das Muster mehrere Gruppen von Zeichen mit unterschiedlichen Zahlen enthält, zum Beispiel: "#, ##, ###, ####", dann wird die Gruppe als nächstes verwendet, dh "#, ##, ###, ####" == "######, ####"
public class main {public static void main (String [] args) {BigDecimal BigDecimal = BigDecimal.ValueOf (65652323265.626262); String muster = "#, ##, ##, ###, ### 0.00"; String muster2 = "#####, ### 0.00"; String muster3 = "##, ####, ### 0.00"; Decimalformat DecimalFormat = new DecimalFormat (Muster); System.out.println (DecimalFormat.Format (BigDecimal)); DecimalFormat.Appypattern (Muster2); System.out.println (DecimalFormat.Format (BigDecimal)); DecimalFormat.Appypattern (muster3); System.out.println (DecimalFormat.Format (BigDecimal)); }}Ausgabe:
656.5232.3265,63656,5232.3265,63656.5232.3265,63
Spezielle Musterzeichen
Wissenschaftliche Zählmethode
1234 kann als 1,234 x 10^3 dargestellt werden, und das Muster lautet "0. ### E0", das 1234 bis 1,234e3 formatiert.
Anzahl der Ganzzahlen:
Die Anzahl der signifikanten Zahlen leitet sich aus der Summe der Mindestanzahl der Ganzzahl und der maximalen Anzahl der Dezimalstellen ab. Beispielsweise beträgt "## 0. ## E0" Die Mindestanzahl der Ganzzahlen beträgt 1 und die maximale Anzahl der Dezimalstellen 2, dann beträgt die gültige Zahl 3 und der formatierte 12345 "12,3e3". Mit Ausnahme der gültigen Nummer werden andere Elemente weggelassen.
Numerische Rundungsregeln
RoundingMode kann über die Methode DecimalFormat.SetroundingMode eingestellt werden. Die Standardeinstellung ist RoundingMode.half_even.
Es ist nicht synchron. Wenn Sie von mehreren Threads zugegriffen werden, müssen Sie die Synchronisation selbst implementieren
Für jeden Thread wird empfohlen, eine separate Formatinstanz zu erstellen. Wenn mehrere Threads gleichzeitig auf ein Format zugreifen, muss es extern synchronisiert werden.
Beispiel
// Drucken Sie eine Nummer unter Verwendung der lokalisierten Zahl, der Ganzzahl, der Währung, des prozentualen Formats für jedes Gebietsschema aus [] locales = numberFormat.getAVailableLocales (); double mynumber = -1234.56; NumberFormat Form; für (int j = 0; j <4; ++ j) {System.out.println ("Format"); für (int i = 0; i <länger.Length; ++ i) {if (örtlich [i] .GetCountry (). Länge () == 0) {Fortsetzung; // Lokus nur überspringen} system.out.print (Orte [i] .getDisplayName ()); Switch (j) {Fall 0: Form = numberFormat.getInstance (Lokales [i]); brechen; Fall 1: Form = numberFormat.getIntegerinstance (Lokales [i]); brechen; Fall 2: Form = numberFormat.getCurrencyInstance (Orte [i]); brechen; Standard: Form = numberFormat.GetpercentinStance (Orte [i]); brechen; } if (Forminstanz von DecimalFormat) {System.out.print (":" + ((decimalFormat) .TOPATTERN ()); } System.out.print (" ->" + Form.Format (mynumber)); try {System.out.println (" ->" + Form.Parse (Form.Format (mynumber))); } catch (ParseException e) {}}}Referenz: Originaladresse
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.