Hauptklasse verwendet: java.text.decimalformat
1. Um ein Objekt zu instanziieren, können Sie die folgenden zwei Methoden verwenden:
Die Codekopie lautet wie folgt:
DecimalFormat df = (DecimalFormat) numberFormat.getInstance ();
DecimalFormat df1 = (DecimalFormat) DecimalFormat.getInstance ();
Weil Decimalformat von NumberFormat erbt.
2. Stellen Sie die Anzahl der Dezimalstellen fest
Das System ist standardmäßig zu den Dezimalstellen beträgt 3, wie z. B.:
Die Codekopie lautet wie folgt:
DecimalFormat df = (DecimalFormat) numberFormat.getInstance ();
System.out.println (df.format (12.3456789));
Ausgabe: 12.346
Jetzt können Sie die Dezimalzahl auf zwei Ziffern nach der folgenden Methode einstellen:
Die Codekopie lautet wie folgt:
df.setMaximumFractionDigits (2);
System.out.println (df.format (12.3456789));
Dann ist die Ausgabe: 12.35
3. Es gibt zwei Möglichkeiten, Zahlen in prozentuale Ausgabe umzuwandeln:
(1)
Die Codekopie lautet wie folgt:
df.appyprenner ("##. ##%");
System.out.println (df.format (12.3456789));
System.out.println (df.format (1));
System.out.println (df.format (0.015));
Die Ausgaben sind: 1234,57% 100% 1,5%
(2)
Die Codekopie lautet wie folgt:
df.setMaximumFractionDigits (2);
System.out.println (df.format (12.3456789*100)+"%");
System.out.println (df.format (1*100)+"%");
System.out.println (df.format (0,015*100)+"%");
Die Ausgänge sind:
1.234,57% 100% 1,5%
4. Stellen Sie die Gruppengröße ein
Die Codekopie lautet wie folgt:
DecimalFormat df1 = (DecimalFormat) DecimalFormat.getInstance ();
DF1.SetGroupingSize (2);
System.out.println (df1.format (123456789));
Ausgabe: 1,23,45,67,89
Sie können auch Gruppierungseinstellungen durch df1.setGrouping (false) deaktivieren;
Die Codekopie lautet wie folgt:
DecimalFormat df1 = (DecimalFormat) DecimalFormat.getInstance ();
DF1.SetGroupingSize (2);
df1.setGroupingused (false);
System.out.println (df1.format (123456789));
Ausgabe: 123456789
5. Stellen Sie die Dezimalzahl auf 2 Ziffern ein
Die Codekopie lautet wie folgt:
DecimalFormat df2 = (DecimalFormat) DecimalFormat.getInstance ();
df2.appyprenner ("0,00");
System.out.println (df2.format (1.2));
Ausgabe: 1.20
Manchmal müssen wir das Format der Ausgabenummern steuern.
Vielleicht kümmert Sie sich nicht um das Format, aber Sie müssen sich um Ihr Programm kümmern, das weltweit universell ist.
System.out.println (1234,56);
In den Vereinigten Staaten ist "." Wie geht es damit um?
Einige Pakete im Java.text -Paket können diese Art von Problem behandeln. Das folgende einfache Beispiel verwendet diese Klassen, um das oben angesprochene Problem zu lösen:
Die Codekopie lautet wie folgt:
Java.Text.numberformat importieren;
Import Java.util.locale;
öffentliche Klasse DecimalFormat1 {
public static void main (String args []) {
// Erhalten Sie das lokale Standardformat
NumnFormat nf1 = numberFormat.getInstance ();
System.out.println (NF1.Format (1234,56));
// das deutsche Format erhalten
NumberFormat nf2 =
NumberFormat.getInstance (Lokale.german);
System.out.println (nf2.format (1234.56));
}}
Wenn Sie in den USA sind, nachdem Sie das Programm ausgeführt haben, erhalten Sie Ausgabe:
1,234,56
1,234,56
Mit anderen Worten, verwenden Sie verschiedene Gewohnheiten, um Zahlen an verschiedenen Stellen darzustellen.
Die Methode numberFormat.getInstance () gibt eine Instanz von NumberFormat zurück (tatsächlich eine bestimmte Unterklasse von NumberFormat, wie z. B. DecimalFormat), die für die Formatierung einer Nummer basierend auf lokalen Einstellungen geeignet ist. Sie können auch regionale nicht defekte regionale Einstellungen wie Deutschland verwenden. Die Formatierungsmethode formatiert dann die Zahlen nach bestimmten regionalen Regeln. Dieses Programm kann auch in einfacher Form verwendet werden:
NumberFormat.getInstance (). Format (1234,56)
Aber ein Format speichern und dann wiederverwenden ist effizienter. Internationalisierung ist ein großes Problem bei der Formatierung von Zahlen.
Eine weitere effektive Kontrolle über das Format, z. B. die Anzahl der Ziffern im Bruchteil angeben.
Die Codekopie lautet wie folgt:
importieren java.text.decimalformat;
Import Java.util.locale;
Public Class Decimalformat2 {
public static void main (String args []) {
// Erhalten Sie das lokale Standardformat
DecimalFormat df1 = new DecimalFormat ("###. 000");
System.out.println (df1.format (1234,56));
// das deutsche Format erhalten
Locale.SetDefault (Locale.german);
DecimalFormat df2 = new DecimalFormat ("###. 000");
System.out.println (df2.format (1234.56));
}
}
In diesem Beispiel wird das Zahlenformat verwendet, wobei Symbole wie "####. 000" verwendet werden. Dieser Modus bedeutet, dass es vor dem Dezimalpunkt vier Zahlen gibt. Programmausgabe:
1234,560
1234.560
In ähnlicher Weise können auch Formate in exponentieller Form kontrolliert werden, beispielsweise:
Die Codekopie lautet wie folgt:
importieren java.text.decimalformat;
Public Class Decimalformat3 {
public static void main (String args []) {
DecimalFormat DF = New Decimalformat ("0,000E0000");
System.out.println (df.format (1234,56));
}
}
Ausgabe:
1.235e0003
Für Prozentsätze:
Die Codekopie lautet wie folgt:
Java.Text.numberformat importieren;
Public Class Decimalformat4 {
public static void main (String args []) {
NumnFormat nf = numberFormat.getpercentinStance ();
System.out.println (NF.Format (0,47));
}
}
Ausgabe:
47%
Bisher haben Sie verschiedene Techniken für die Formatierung von Zahlen gesehen. Wie lese und analyse ich andererseits eine Zeichenfolge, die formatierte Zahlen enthält? Auflösungsunterstützung ist in NumberFormat enthalten. Zum Beispiel:
Die Codekopie lautet wie folgt:
Import Java.util.locale;
Java.Text.numberformat importieren;
Java.text.ParseException importieren;
Public Class Decimalformat5 {
public static void main (String args []) {
// Lokales Format
NumnFormat nf1 = numberFormat.getInstance ();
Objekt obj1 = null;
// Formatbasiertes Parsen
versuchen {
OBJ1 = NF1.PARSE ("1234,56");
}
catch (ParseException e1) {
System.err.println (e1);
}
System.out.println (OBJ1);
// Deutsches Format
NumberFormat nf2 =
NumberFormat.getInstance (Lokale.german);
Objekt obj2 = null;
// Formatbasiertes Parsen
versuchen {
obj2 = nf2.Parse ("1234,56");
}
catch (ParseException e2) {
System.err.println (e2);
}
System.out.println (OBJ2);
}
}
Dieses Beispiel ist in zwei Teile unterteilt, die beide eine Zeichenfolge analysieren: "1234,56". Der erste Teil verwendet das lokale Format, um analysiert zu werden, während der zweite Teil das deutsche Format zum Analysieren verwendet. Wenn das Programm in den USA ausgeführt wird, ist das Ergebnis:
123456
1234,56
Mit anderen Worten, "1234,56" gilt in den Vereinigten Staaten als riesige Ganzzahl von 123456 und als Dezimalzahl von "1234,56" in Deutschland.
Es gibt auch die letzte Frage der Formatierung der Diskussion. Im obigen Beispiel werden sowohl Decimalformat als auch Numberformat verwendet. DecimalFormat wird häufig verwendet, um eine gute Formatkontrolle zu erhalten, während NumberFormat häufig verwendet wird, um verschiedene Regionen als lokal anzugeben. Wie kombiniert ich zwei Kategorien?
Die Antwort dreht sich um die Tatsache, dass Decimalformat eine Unterklasse von Numberformat ist, deren Instanz als bestimmte Region angegeben ist. Daher können Sie einen Bereich mit numberformat.getInstance angeben und dann die Struktur in ein Decimalformat -Objekt geben. In der Dokumentation wird erwähnt, dass diese Technik in den meisten Fällen angewendet werden kann. Sie müssen jedoch einen Try/Catch -Block verwenden, um die Besetzung zu umgeben, falls die Umwandlung nicht ordnungsgemäß funktioniert (vermutlich in sehr unauffälligen Situationen ein seltsames Gebiet verwendet). Hier ist ein Beispiel wie folgt:
Die Codekopie lautet wie folgt:
importieren java.text.decimalformat;
Java.Text.numberformat importieren;
Import Java.util.locale;
Public Class Decimalformat6 {
public static void main (String args []) {
DecimalFormat df = null;
// ein NumberFormat -Objekt abrufen und
// in ein Dezimalformat -Objekt gegossen
versuchen {
df = (Decimalformat)
NumberFormat.getInstance (Lokale.german);
}
catch (classCastException e) {
System.err.println (e);
}
// Formatmodus festlegen
df.appyprenner ("#### 00000");
// eine Nummer formatieren
System.out.println (df.format (1234,56));
}
}
Die GetInstance () -Methode erhält das Format und ruft dann die Methode applyPattern () auf, um den Formatmodus und die Ausgänge festzulegen:
1234,56000
Wenn Sie sich nicht für die Internationalisierung interessieren, können Sie Decimalformat direkt verwenden.