Standardmäßige Zahlenformatzeichenfolgen
Aktualisiert: November 2007
Standardformatzeichenfolgen für Zahlen werden für die Formatierung allgemeiner numerischer Typen verwendet. Eine standardmäßige Zahlenformatzeichenfolge hat die Form Axx, wobei A ein alphabetisches Zeichen, das Formatbezeichner genannt wird, und xx eine optionale Ganzzahl ist, die als Genauigkeitsangabe bezeichnet wird. Die Genauigkeitsangabe reicht von 0 bis 99 und wirkt sich auf die Anzahl der Ziffern im Ergebnis aus. Jede Zahlenformatzeichenfolge, die mehr als ein alphabetisches Zeichen (einschließlich Leerzeichen) enthält, wird als benutzerdefinierte Zahlenformatzeichenfolge interpretiert.
Die folgenden Tabelle beschreibt die standardmäßigen Zahlenformatbezeichner und zeigt eine Beispielausgabe an, die von den einzelnen Formatbezeichnern erstellt wird. Weitere Informationen finden Sie in den Hinweisen unterhalb der Tabelle.
Formatbezeichner |
Name |
Beschreibung |
---|---|---|
C oder c |
Währung |
Die Zahl wird in eine Zeichenfolge konvertiert, die einen Währungsbetrag darstellt. Die Konvertierung wird durch die Informationen zum Währungsformat im aktuellen NumberFormatInfo-Objekt gesteuert. Die Genauigkeitsangabe gibt die gewünschte Anzahl von Dezimalstellen an. Wenn die Genauigkeitsangabe fehlt, wird die durch das aktuelle NumberFormatInfo-Objekt angegebene Standardgenauigkeit für Währungen verwendet. Im folgenden Beispiel wird ein Double-Wert mit dem Währungsformatbezeichner formatiert.
|
D oder d |
Dezimal |
Dieses Format wird nur bei ganzzahligen Typen unterstützt. Die Zahl wird in eine Zeichenfolge aus Dezimalziffern (0-9) konvertiert, der ein Minuszeichen vorangestellt wird, wenn es sich um eine negative Zahl handelt. Die Genauigkeitsangabe gibt die gewünschte Mindestanzahl von Ziffern für die resultierende Zeichenfolge an. Bei Bedarf werden links von der Zahl Nullen ergänzt, um die durch die Genauigkeitsangabe bestimmte Anzahl von Ziffern zu erstellen. Im folgenden Beispiel wird ein Int32-Wert mit dem Dezimalformatbezeichner formatiert.
|
E oder e |
Wissenschaftlich (exponentiell) |
Die Zahl wird in eine Zeichenfolge der Form "-d.ddd…E+ddd" oder "-d.ddd…e+ddd" konvertiert, wobei jedes 'd' eine Ziffer (0-9) angibt. Die Zeichenfolge beginnt mit einem Minuszeichen, wenn die Zahl negativ ist. Es steht immer eine Ziffer vor dem Dezimaltrennzeichen. Die Genauigkeitsangabe gibt die gewünschte Anzahl von Ziffern nach dem Dezimaltrennzeichen an. Wenn die Genauigkeitsangabe fehlt, werden als Standard sechs Ziffern nach dem Dezimaltrennzeichen angegeben. Die Groß- oder Kleinschreibung des Formatbezeichners gibt an, ob dem Exponenten ein 'E' oder ein 'e' vorangestellt wird. Der Exponent besteht immer aus einem Plus- oder Minuszeichen und mindestens drei Ziffern. Der Exponent wird ggf. durch Nullen ergänzt, um diesem Mindestwert zu entsprechen. Im folgenden Beispiel wird ein Double-Wert mit dem Formatbezeichner für die wissenschaftliche Notation formatiert.
|
F oder f |
Festkomma |
Die Zahl wird in eine Zeichenfolge der Form "-ddd.ddd…" konvertiert, wobei jedes 'd' eine Ziffer (0-9) angibt. Die Zeichenfolge beginnt mit einem Minuszeichen, wenn die Zahl negativ ist. Die Genauigkeitsangabe gibt die gewünschte Anzahl von Dezimalstellen an. Wenn die Genauigkeitsangabe fehlt, wird die durch die NumberDecimalDigits-Eigenschaft des aktuellen NumberFormatInfo-Objekts angegebene Standardgenauigkeit für Zahlen verwendet. Im folgenden Beispiel wird ein Double-Wert und ein Int32-Wert mit dem Festkommaformatbezeichner formatiert.
|
G oder g |
Allgemein |
Die Zahl wird abhängig vom Typ der Zahl und dem Vorhandensein einer Genauigkeitsangabe in eine möglichst kompakte Festkomma- oder wissenschaftliche Notation konvertiert. Wenn die Genauigkeitsangabe fehlt oder 0 lautet, wird über den Typ der Zahl die Standardgenauigkeit festgelegt (siehe folgende Liste). Die Festkommanotation wird verwendet, wenn der Exponent, der sich durch Ausdrücken der Zahl in wissenschaftlicher Notation ergibt, größer als –5 und kleiner als die Genauigkeitsangabe ist. Andernfalls wird die wissenschaftliche Notation verwendet. Das Ergebnis enthält ggf. ein Dezimaltrennzeichen. Nachfolgende Nullen werden weggelassen. Wenn die Genauigkeitsangabe vorhanden ist und die Anzahl der signifikanten Ziffern im Ergebnis die angegebene Genauigkeit übersteigt, werden die überzähligen nachfolgenden Ziffern durch Rundung entfernt. Von dieser Regel wird ausnahmsweise abgewichen, wenn es sich bei der Zahl um eine Decimal-Zahl handelt und die Genauigkeitsangabe fehlt. In diesem Fall wird immer die Festkommanotation verwendet, und nachfolgende Nullen werden beibehalten. Bei Verwendung der wissenschaftlichen Notation wird dem Exponenten im Ergebnis 'E' vorangestellt, wenn der Formatbezeichner 'G' ist, oder 'e', wenn der Formatbezeichner 'g' ist. Im folgenden Beispiel werden gemischte Gleitkommawerte mit dem allgemeinen Formatbezeichner formatiert.
|
N oder n |
Zahl |
Die Zahl wird in eine Zeichenfolge mit der Form "-d,ddd,ddd.ddd…" konvertiert, wobei '-' ggf. ein negatives Zahlensymbol, 'd' eine Ziffer (0-9), ',' ein Tausendertrennzeichen zwischen Zahlengruppen und '.' ein Dezimaltrennzeichensymbol angibt. Das Muster der negativen Zahl, die Größe der Zahlengruppe, das Tausendertrennzeichen und das Dezimaltrennzeichen werden durch die Eigenschaften NumberNegativePattern, NumberGroupSizes, NumberGroupSeparator und NumberDecimalSeparator des aktuellen NumberFormatInfo-Objekts angegeben. Die Genauigkeitsangabe gibt die gewünschte Anzahl von Dezimalstellen an. Wenn die Genauigkeitsangabe fehlt, wird die durch die NumberDecimalDigits-Eigenschaft des aktuellen NumberFormatInfo-Objekts angegebene Standardgenauigkeit für Zahlen verwendet. Im folgenden Beispiel werden gemischte Gleitkommawerte mit dem Zahlenformatbezeichner formatiert.
|
P oder p |
Prozent |
Die Zahl wird in eine Zeichenfolge konvertiert, die eine Prozentangabe darstellt. Diese wird durch die NumberFormatInfo.PercentNegativePattern-Eigenschaft definiert, wenn die Zahl negativ ist, bzw. durch die NumberFormatInfo.PercentPositivePattern-Eigenschaft, wenn die Zahl positiv ist. Die konvertierte Zahl wird mit 100 multipliziert, um als Prozentangabe dargestellt zu werden. Die Genauigkeitsangabe gibt die gewünschte Anzahl von Dezimalstellen an. Wenn die Genauigkeitsangabe fehlt, wird die durch das aktuelle NumberFormatInfo-Objekt angegebene Standardgenauigkeit für Zahlen verwendet. Im folgenden Beispiel werden gemischte Gleitkommawerte mit dem Prozentformatbezeichner formatiert.
|
R oder r |
Schleife |
Dieses Format wird nur für den Single-Typ und den Double-Typ unterstützt. Der Schleifenbezeichner stellt sicher, dass ein in eine Zeichenfolge konvertierter numerischer Wert wieder in den gleichen numerischen Wert rückkonvertiert wird. Ein mit diesem Bezeichner formatierter numerischer Wert wird zuerst mit dem allgemeinen Format getestet, wobei die Genauigkeit bei Double 15 Stellen und bei Single 7 Stellen beträgt. Wenn der Wert erfolgreich in den gleichen numerischen Wert rückkonvertiert werden kann, wird er mit dem Bezeichner für das allgemeine Format formatiert. Wenn der Wert nicht in den gleichen Wert rückkonvertiert werden kann, wird der Wert mit eine Genauigkeit von 17 Ziffern für Double und 9 Ziffern für Single formatiert. Eine Genauigkeitsangabe kann zwar vorhanden sein, sie wird aber ignoriert. Bei diesem Bezeichner hat die Rückkonvertierbarkeit höhere Priorität als die Genauigkeit. Im folgenden Beispiel wird Double-Werte mit dem Schleifenformatbezeichner formatiert.
|
X oder x |
Hexadezimal |
Dieses Format wird nur bei ganzzahligen Typen unterstützt. Die Zahl wird in eine Zeichenfolge von Hexadezimalziffern konvertiert. Die Groß- oder Kleinschreibung des Formatbezeichners gibt an, ob für Hexadezimalziffern, die größer als 9 sind, Groß- oder Kleinbuchstaben verwendet werden. Verwenden Sie z. B. 'X', um "ABCDEF" zu generieren, und 'x' um "abcdef" zu erstellen. Die Genauigkeitsangabe gibt die gewünschte Mindestanzahl von Ziffern für die resultierende Zeichenfolge an. Bei Bedarf werden links von der Zahl Nullen ergänzt, um die durch die Genauigkeitsangabe bestimmte Anzahl von Ziffern zu erstellen. Im folgenden Beispiel wird Int32-Werte mit dem Hexadezimal-Formatbezeichner formatiert.
|
Jedes andere einzelne Zeichen |
(Unbekannter Bezeichner) |
(Ein unbekannter Bezeichner löst eine FormatException zur Laufzeit aus.) |
Hinweise
Einstellungen der Systemsteuerung
Die Einstellungen der Regions- und Sprachoptionen in der Systemsteuerung beeinflussen die durch einen Formatierungsvorgang erstellte Ergebniszeichenfolge. Mithilfe dieser Einstellungen wird das NumberFormatInfo-Objekt initialisiert, das der aktuellen Threadkultur zugeordnet ist. Diese wiederum stellt die Werte zur Steuerung der Formatierung bereit. Auf Computern mit unterschiedlichen Einstellungen werden unterschiedliche Ergebniszeichenfolgen generiert.
Wenn der CultureInfo.CultureInfo(String)-Constructor verwendet wird, um ein neues CultureInfo-Objekt zu instantiieren, das dieselbe Kultur repräsentiert wie die aktuelle Systemkultur, werden darüber hinaus alle Anpassungen, die über die Einstellung Regions- und Sprachoptionen in der Systemsteuerung eingerichtet werden, auf das neue CultureInfo-Objekt angewendet. Sie können die CultureInfo.CreateSpecificCulture-Methode verwenden, um eine CultureInfo zu erstellen, die die Anpassungen eines Systems nicht reflektiert.
NumberFormatInfo-Eigenschaften
Die Formatierung wird durch die Eigenschaften des aktuellen NumberFormatInfo-Objekts beeinflusst, das implizit durch die aktuelle Threadkultur oder explizit durch den IFormatProvider-Parameter der Methode bereitgestellt wird, die die Formatierung aufruft. Geben Sie ein NumberFormatInfo-Objekt oder ein CultureInfo-Objekt für diesen Parameter an.
Ganzzahlige numerische Typen und numerische Gleitkommatypen
Einige Beschreibungen von standardmäßige Zahlenformatbezeichner verweisen auf ganzzahlige numerische Typen oder numerische Gleitkommatypen. Die ganzzahligen numerischen Typen sind Byte, SByte, Int16, Int32, Int64, UInt16, UInt32 und UInt64. Die numerischen Gleitkommatypen sind Decimal, Single und Double.
Unendlichkeiten und NaN bei Gleitkommawerten
Wenn der Wert eines Single-Gleitkommatyps oder eines Double-Gleitkommatyps positiv unendlich, negativ unendlich oder keine Zahl (Not a Number, NaN) ist, handelt es sich bei der formatierten Zeichenfolge unabhängig von der Formatzeichenfolge um den Wert der entsprechenden PositiveInfinitySymbol-Eigenschaft, NegativeInfinitySymbol-Eigenschaft oder NaNSymbol-Eigenschaft, die durch das derzeit gültige NumberFormatInfo-Objekt angegeben wird.
Beispiel
Durch das folgende Beispiel werden mithilfe der Kultur en-us und allen Standardzahlen-Formatbezeichnern ein ganzzahliger Wert und ein numerischer Gleitkommawert formatiert. In diesem Beispiel werden zwei spezielle numerische Typen verwendet. Es würde jedoch für jeden der numerischen Basistypen (Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, Decimal, Single und Double) zu ähnlichen Ergebnisse führen.
Option Strict On
Imports System.Globalization
Imports System.Threading
Module NumericFormats
Public Sub Main()
' Display string representations of numbers for en-us culture
Dim ci As New CultureInfo("en-us")
' Output floating point values
Dim floating As Double = 10761.937554
Console.WriteLine("C: {0}", _
floating.ToString("C", ci)) ' Displays "C: $10,761.94"
Console.WriteLine("E: {0}", _
floating.ToString("E03", ci)) ' Displays "E: 1.076E+004"
Console.WriteLine("F: {0}", _
floating.ToString("F04", ci)) ' Displays "F: 10761.9376"
Console.WriteLine("G: {0}", _
floating.ToString("G", ci)) ' Displays "G: 10761.937554"
Console.WriteLine("N: {0}", _
floating.ToString("N03", ci)) ' Displays "N: 10,761.938"
Console.WriteLine("P: {0}", _
(floating/10000).ToString("P02", ci)) ' Displays "P: 107.62 %"
Console.WriteLine("R: {0}", _
floating.ToString("R", ci)) ' Displays "R: 10761.937554"
Console.WriteLine()
' Output integral values
Dim integral As Integer = 8395
Console.WriteLine("C: {0}", _
integral.ToString("C", ci)) ' Displays "C: $8,395.00"
Console.WriteLine("D: {0}", _
integral.ToString("D6")) ' Displays D: 008395""
Console.WriteLine("E: {0}", _
integral.ToString("E03", ci)) ' Displays "E: 8.395E+003"
Console.WriteLine("F: {0}", _
integral.ToString("F01", ci)) ' Displays "F: 8395.0"
Console.WriteLine("G: {0}", _
integral.ToString("G", ci)) ' Displays "G: 8395"
Console.WriteLine("N: {0}", _
integral.ToString("N01", ci)) ' Displays "N: 8,395.0"
Console.WriteLine("P: {0}", _
(integral/10000).ToString("P02", ci)) ' Displays "P: 83.95 %"
Console.WriteLine("X: 0x{0}", _
integral.ToString("X", ci)) ' Displays "X: 0x20CB"
Console.WriteLine()
End Sub
End Module
using System;
using System.Globalization;
using System.Threading;
public class NumericFormats
{
public static void Main()
{
// Display string representations of numbers for en-us culture
CultureInfo ci = new CultureInfo("en-us");
// Output floating point values
double floating = 10761.937554;
Console.WriteLine("C: {0}",
floating.ToString("C", ci)); // Displays "C: $10,761.94"
Console.WriteLine("E: {0}",
floating.ToString("E03", ci)); // Displays "E: 1.076E+004"
Console.WriteLine("F: {0}",
floating.ToString("F04", ci)); // Displays "F: 10761.9376"
Console.WriteLine("G: {0}",
floating.ToString("G", ci)); // Displays "G: 10761.937554"
Console.WriteLine("N: {0}",
floating.ToString("N03", ci)); // Displays "N: 10,761.938"
Console.WriteLine("P: {0}",
(floating/10000).ToString("P02", ci)); // Displays "P: 107.62 %"
Console.WriteLine("R: {0}",
floating.ToString("R", ci)); // Displays "R: 10761.937554"
Console.WriteLine();
// Output integral values
int integral = 8395;
Console.WriteLine("C: {0}",
integral.ToString("C", ci)); // Displays "C: $8,395.00"
Console.WriteLine("D: {0}",
integral.ToString("D6", ci)); // Displays D: 008395""
Console.WriteLine("E: {0}",
integral.ToString("E03", ci)); // Displays "E: 8.395E+003"
Console.WriteLine("F: {0}",
integral.ToString("F01", ci)); // Displays "F: 8395.0"
Console.WriteLine("G: {0}",
integral.ToString("G", ci)); // Displays "G: 8395"
Console.WriteLine("N: {0}",
integral.ToString("N01", ci)); // Displays "N: 8,395.0"
Console.WriteLine("P: {0}",
(integral/10000).ToString("P02", ci)); // Displays "P: 83.95 %"
Console.WriteLine("X: 0x{0}",
integral.ToString("X", ci)); // Displays "X: 0x20CB"
Console.WriteLine();
}
}
Siehe auch
Konzepte
Benutzerdefinierte Zahlenformatzeichenfolgen