Freigeben über


Standardmäßige Zahlenformatzeichenfolgen

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. Weitere Informationen finden Sie unter Benutzerdefinierte Zahlenformatzeichenfolgen.

Standardmäßige numerische Formatzeichenfolgen werden von einigen Überladungen der ToString-Methode aller numerischen Typen unterstützt. Sie können z. B. eine numerische Formatzeichenfolge an die ToString(String)-Methode und ToString(String, IFormatProvider)-Methode des Int32-Typs übergeben. Standardmäßige numerische Formatzeichenfolgen werden auch von der .NET Framework-Funktion für die kombinierte Formatierung unterstützt, die von einigen Write-Methoden und WriteLine-Methoden der Console-Klasse und der StreamWriter-Klasse, der String.Format-Methode und der StringBuilder.AppendFormat-Methode verwendet wird.

TippTipp

Sie können das Formathilfsprogramm herunterladen, eine Anwendung, mit der Sie Formatzeichenfolgen auf numerische Werte oder auf Datums- und Zeitwerte anwenden und die Ergebniszeichenfolge anzeigen können.

Die folgenden Tabelle beschreibt die standardmäßigen Zahlenformatbezeichner und zeigt eine Beispielausgabe an, die von den einzelnen Formatbezeichnern erstellt wird. Weitere Informationen über das Verwenden von numerischen Standardformatzeichenfolgen finden Sie im Abschnitt Hinweise. Der Abschnitt Beispiel enthält eine umfassende Abbildung ihrer Verwendung.

Formatbezeichner

Name

Beschreibung

Beispiele

"C" oder "c"

Währung

Ergebnis: Währungswert.

Unterstützt von: Alle numerischen Typen.

Genauigkeitsangabe: Anzahl der Dezimalstellen.

Standardmäßige Genauigkeitsangabe: Definiert von System.Globalization.NumberFormatInfo.

Weitere Informationen finden Sie unter Der Währungsformatbezeichner "C".

123.456 ("C", en-US) -> $123.46

123.456 ("C", fr-FR) -> 123,46 €

123.456 ("C", ja-JP) -> ¥123

-123.456 ("C3", en-US) -> ($123.456)

-123.456 ("C3", fr-FR) -> -123,456 €

-123.456 ("C3", ja-JP) -> -¥123.456

"D" oder "d"

Decimal

Ergebnis: Ganzzahlige Ziffern mit optionalem Minuszeichen.

Unterstützt von: Nur ganzzahlige Typen.

Genauigkeitsangabe: Mindestanzahl von Ziffern.

Standardmäßige Genauigkeitsangabe: Mindestanzahl von erforderlichen Ziffern.

Weitere Informationen finden Sie unter Der Dezimalformatbezeichner "D".

1234 ("D") -> 1234

-1234 ("D6") -> -001234

"E" oder "e"

Exponential (wissenschaftlich)

Ergebnis: Exponentielle Notation.

Unterstützt von: Alle numerischen Typen.

Genauigkeitsangabe: Anzahl der Dezimalstellen.

Standardmäßige Genauigkeitsangabe: 6.

Weitere Informationen finden Sie unter Der Exponentialformatbezeichner "E".

1052.0329112756 ("E", en-US) -> 1.052033E+003

1052.0329112756 ("e", fr-FR) -> 1,052033e+003

-1052.0329112756 ("e2", en-US) -> -1.05e+003

-1052.0329112756 ("E2", fr_FR) -> -1,05E+003

"F" oder "f"

Festkomma

Ergebnis: Ganze Zahlen und Dezimalzahlen mit optionalem Minuszeichen.

Unterstützt von: Alle numerischen Typen.

Genauigkeitsangabe: Anzahl der Dezimalstellen.

Standardmäßige Genauigkeitsangabe: Definiert von System.Globalization.NumberFormatInfo.

Weitere Informationen finden Sie unter Der Festkommaformatbezeichner "F".

1234.567 ("F", en-US) -> 1234.57

1234.567 ("F", de-DE) -> 1234,57

1234 ("F1", en-US) -> 1234.0

1234 ("F1", de-DE) -> 1234,0

-1234.56 ("F4", en-US) -> -1234.5600

-1234.56 ("F4", de-DE) -> -1234,5600

"G" oder "g"

Allgemein

Ergebnis: Die kompakteste Festkomma- oder wissenschaftliche Notation.

Unterstützt von: Alle numerischen Typen.

Genauigkeitsangabe: Anzahl der signifikanten Stellen.

Standardmäßige Genauigkeitsangabe: Abhängig vom numerischen Typ.

Weitere Informationen finden Sie unter Der allgemeine Formatbezeichner "G".

-123.456 ("G", en-US) -> -123.456

123.456 ("G", sv-SE) -> -123,456

123.4546 ("G4", en-US) -> 123.5

123.4546 ("G4", sv-SE) -> 123,5

-1.234567890e-25 ("G", en-US) -> -1.23456789E-25

-1.234567890e-25 ("G", sv-SE) -> -1,23456789E-25

"N" oder "n"

Zahl

Ergebnis: Ganze Zahlen und Dezimalzahlen, Gruppentrennzeichen und ein Dezimaltrennzeichen mit optionalem Minuszeichen.

Unterstützt von: Alle numerischen Typen.

Genauigkeitsangabe: gewünschte Anzahl der Dezimalstellen.

Standardmäßige Genauigkeitsangabe: Definiert von System.Globalization.NumberFormatInfo.

Weitere Informationen finden Sie unter Der numerische Formatbezeichner "N".

1234.567 ("N", en-US) -> 1,234.57

1234.567 ("N", ru-RU) -> 1 234,57

1234 ("N", en-US) -> 1,234.0

1234 ("N", ru-RU) -> 1 234,0

-1234.56 ("N", en-US) -> -1,234.560

-1234.56 ("N", ru-RU) -> -1 234,560

"P" oder "p"

Prozent

Ergebnis: Die Zahl multipliziert mit 100 und mit einem Prozentzeichen versehen.

Unterstützt von: Alle numerischen Typen.

Genauigkeitsangabe: Gewünschte Anzahl der Dezimalstellen.

Standardmäßige Genauigkeitsangabe: Definiert von System.Globalization.NumberFormatInfo.

Weitere Informationen finden Sie unter Der Prozentformatbezeichner "P".

1 ("P", en-US) -> 100.00 %

1 ("P", fr-FR) -> 100,00 %

-0.39678 ("P1", en-US) -> -39.7 %

-0.39678 ("P1", fr-FR) -> -39,7 %

"R" oder "r"

Schleife

Ergebnis: Eine Zeichenfolge, die eine Schleife zu einem identischen Wert ausführen kann.

Unterstützt von: Single, Double und BigInteger.

Genauigkeitsangabe: Wird ignoriert.

Weitere Informationen finden Sie unter Der Schleifenformatbezeichner "R".

123456789.12345678 ("R") -> 123456789.12345678

-1234567890.12345678 ("R") -> -1234567890.1234567

"X" oder "x"

Hexadezimal

Ergebnis: Eine Hexadezimalzeichenfolge.

Unterstützt von: Nur ganzzahligen Typen

Genauigkeitsangabe: Anzahl von Ziffern in der Ergebniszeichenfolge.

Weitere Informationen finden Sie unter Der Hexadezimal-Formatbezeichner "X".

255 ("X") -> FF

-1 ("x") -> ff

255 ("x4") -> 00ff

-1 ("X4") -> 00FF

Jedes andere einzelne Zeichen

Unbekannter Bezeichner

Ergebnis: Löst zur Laufzeit eine FormatException aus.

Verwenden von numerischen Standardformatzeichenfolgen

Eine numerische Standardformatzeichenfolge kann verwendet werden, um die Formatierung eines numerischen Werts wie folgt zu definieren:

  • Die Zeichenfolge kann an eine Überladung der ToString-Methode übergeben werden, die über einen format-Parameter verfügt. Im folgenden Beispiel wird ein numerischer Wert in der aktuellen Kultur (en-US) als Währungszeichenfolge formatiert.

    Dim value As Decimal = 123.456d
    Console.WriteLine(value.ToString("C2"))         
    ' Displays $123.46
    
    decimal value = 123.456m;
    Console.WriteLine(value.ToString("C2"));
    // Displays $123.46
    
  • Die Zeichenfolge kann auch als formatString-Parameter in einem Formatelement angegeben werden, das beispielsweise mit den Methoden String.Format, Console.WriteLine und StringBuilder.AppendFormat verwendet wird. Weitere Informationen finden Sie unter Kombinierte Formatierung. Im folgenden Beispiel wird ein Währungswert mit einem Formatelement in eine Zeichenfolge eingefügt.

    Dim value As Decimal = 123.456d
    Console.WriteLine("Your account balance is {0:C2}.", value)
    ' Displays "Your account balance is $123.46."
    
    decimal value = 123.456m;
    Console.WriteLine("Your account balance is {0:C2}.", value);
    // Displays "Your account balance is $123.46."
    

Die folgenden Abschnitte enthalten ausführliche Informationen zu den einzelnen numerischen Standardformatzeichenfolgen.

Der Währungsformatbezeichner "C"

Mit dem Währungsformatbezeichner "C" wird eine Zahl in eine Zeichenfolge konvertiert, die einen Währungswert darstellt. Die Genauigkeitsangabe gibt die gewünschte Anzahl von Dezimalstellen in der Ergebniszeichenfolge an. Wenn die Genauigkeitsangabe fehlt, wird die Standardgenauigkeit von der NumberFormatInfo.CurrencyDecimalDigits-Eigenschaft definiert.

Wenn der zu formatierende Wert mehr als die angegebene oder die standardmäßige Anzahl von Dezimalstellen aufweist, wird der Bruchwert in der Ergebniszeichenfolge gerundet. Wenn der Wert rechts von der Anzahl angegebener Dezimalstellen 5 oder größer ist, wird die letzte Ziffer in der Ergebniszeichenfolge in positiver Richtung gerundet.

Die Ergebniszeichenfolge wird von den Formatierungsinformationen des aktuellen NumberFormatInfo-Objekts beeinflusst. In der folgenden Tabelle sind die NumberFormatInfo-Eigenschaften aufgeführt, die die Formatierung der zurückgegebenen Zeichenfolge steuern.

NumberFormatInfo-Eigenschaft

Beschreibung

CurrencyPositivePattern

Definiert die Platzierung des Währungssymbols für positive Werte.

CurrencyNegativePattern

Definiert die Platzierung des Währungssymbols für negative Werte und gibt an, ob das Minuszeichen durch Klammern oder durch die NegativeSign-Eigenschaft dargestellt wird.

NegativeSign

Definiert das verwendete Minuszeichen, wenn CurrencyNegativePattern angibt, dass keine Klammern verwendet werden.

CurrencySymbol

Definiert das Währungssymbol.

CurrencyDecimalDigits

Definiert die Standardanzahl von Dezimalstellen in einem Währungswert. Dieser Wert kann mit der Genauigkeitsangabe überschrieben werden.

CurrencyDecimalSeparator

Definiert die Zeichenfolge, die ganze Zahlen und Dezimalzahlen trennt.

CurrencyGroupSeparator

Definiert die Zeichenfolge, die Gruppen von ganzen Zahlen trennt.

CurrencyGroupSizes

Definiert die Anzahl von ganzzahligen Ziffern, die in einer Gruppe angezeigt werden.

Im folgenden Beispiel wird ein Double-Wert mit dem Währungsformatbezeichner formatiert.

Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture))

Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture))

Console.WriteLine(value.ToString("C3", _
                  CultureInfo.CreateSpecificCulture("da-DK")))
' The example displays the following output on a system whose
' current culture is English (United States):
'       $12,345.68
'       $12,345.679
'       kr 12.345,679
double value = 12345.6789;
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture));

Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture));

Console.WriteLine(value.ToString("C3", 
                  CultureInfo.CreateSpecificCulture("da-DK")));
// The example displays the following output on a system whose
// current culture is English (United States):
//       $12,345.68
//       $12,345.679
//       kr 12.345,679

Zurück zur Tabelle

Der Dezimalformatbezeichner "D"

Der Dezimalformatbezeichner "D" konvertiert Zahl wird in eine Zeichenfolge aus Dezimalzahlen (0-9), der ein Minuszeichen vorangestellt wird, wenn es sich um eine negative Zahl handelt. Dieses Format wird nur bei ganzzahligen Typen unterstützt.

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. Bei fehlender Genauigkeitsangabe wird standardmäßig der zur Darstellung der ganzen Zahl ohne führende Nullen erforderliche Minimalwert zugrunde gelegt.

Die Ergebniszeichenfolge wird von den Formatierungsinformationen des aktuellen NumberFormatInfo-Objekts beeinflusst. Wie die folgende Tabelle zeigt, wirkt sich eine einzelne Eigenschaft auf die Formatierung der Ergebniszeichenfolge aus.

NumberFormatInfo-Eigenschaft

Beschreibung

NegativeSign

Definiert die Zeichenfolge, die angibt, dass eine Zahl negativ ist.

Im folgenden Beispiel wird ein Int32-Wert mit dem Dezimalformatbezeichner formatiert.

Dim value As Integer 

value = 12345
Console.WriteLine(value.ToString("D"))
' Displays 12345   
Console.WriteLine(value.ToString("D8"))
' Displays 00012345

value = -12345
Console.WriteLine(value.ToString("D"))
' Displays -12345
Console.WriteLine(value.ToString("D8"))
' Displays -00012345
int value; 

value = 12345;
Console.WriteLine(value.ToString("D"));
// Displays 12345
Console.WriteLine(value.ToString("D8"));
// Displays 00012345

value = -12345;
Console.WriteLine(value.ToString("D"));
// Displays -12345
Console.WriteLine(value.ToString("D8"));
// Displays -00012345

Zurück zur Tabelle

Der Exponentialformatbezeichner "E"

Der Exponentialformatbezeichner "E" konvertiert eine Zahl in eine Zeichenfolge, die folgende Form aufweist: "-d.ddd…E+ddd" oder "-d.ddd…e+ddd". Jedes "d" in der Zeichenfolge steht dabei für eine Ziffer (0-9). Die Zeichenfolge beginnt mit einem Minuszeichen, wenn die Zahl negativ ist. Es steht immer genau 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.

Die Ergebniszeichenfolge wird von den Formatierungsinformationen des aktuellen NumberFormatInfo-Objekts beeinflusst. In der folgenden Tabelle sind die NumberFormatInfo-Eigenschaften aufgeführt, die die Formatierung der zurückgegebenen Zeichenfolge steuern.

NumberFormatInfo-Eigenschaft

Beschreibung

NegativeSign

Definiert die Zeichenfolge, die angibt, dass eine Zahl sowohl für den Koeffizienten als auch für den Exponenten negativ ist.

NumberDecimalSeparator

Definiert die Zeichenfolge, die die ganzzahlige Ziffer von Dezimalstellen im Koeffizienten trennt.

PositiveSign

Definiert die Zeichenfolge, die angibt, dass ein Exponent positiv ist.

Im folgenden Beispiel wird ein Double-Wert mit dem Exponentialformatbezeichner formatiert.

Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture))
' Displays 1.234568E+004

Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture))
' Displays 1.2345678900E+004

Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture))
' Displays 1.2346e+004

Console.WriteLine(value.ToString("E", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 1,234568E+004
double value = 12345.6789;
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture));
// Displays 1.234568E+004

Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture));
// Displays 1.2345678900E+004

Console.WriteLine(value.ToString("e4", CultureInfo.InvariantCulture));
// Displays 1.2346e+004

Console.WriteLine(value.ToString("E", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 1,234568E+004

Zurück zur Tabelle

Der Festkommaformatbezeichner "F"

Der Festkommaformatbezeichner "F" konvertiert eine Zahl in eine Zeichenfolge, die folgende Form aufweist: "-ddd.ddd…". Jedes "d" in der Zeichenfolge steht dabei für eine Ziffer (0-9). Die Zeichenfolge beginnt mit einem Minuszeichen, wenn die Zahl negativ ist.

Die Genauigkeitsangabe gibt die gewünschte Anzahl von Dezimalstellen an. Bei fehlender Genauigkeitsangabe wird die numerische Genauigkeit von der NumberFormatInfo.NumberDecimalDigits-Eigenschaft angegeben.

Die Ergebniszeichenfolge wird von den Formatierungsinformationen des aktuellen NumberFormatInfo-Objekts beeinflusst. In der folgenden Tabelle sind die Eigenschaften des NumberFormatInfo-Objekts aufgeführt, die die Formatierung der Ergebniszeichenfolge steuern.

NumberFormatInfo-Eigenschaft

Beschreibung

NegativeSign

Definiert die Zeichenfolge, die angibt, dass eine Zahl negativ ist.

NumberDecimalSeparator

Definiert die Zeichenfolge, die ganze Zahlen von Dezimalzahlen trennt.

NumberDecimalDigits

Definiert die Standardanzahl von Dezimalzahlen. Dieser Wert kann mit der Genauigkeitsangabe überschrieben werden.

Im folgenden Beispiel wird ein Double-Wert und ein Int32-Wert mit dem Festkommaformatbezeichner formatiert.

Dim integerNumber As Integer
integerNumber = 17843
Console.WriteLine(integerNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 17843.00

integerNumber = -29541
Console.WriteLine(integerNumber.ToString("F3", CultureInfo.InvariantCulture))
' Displays -29541.000

Dim doubleNumber As Double
doubleNumber = 18934.1879
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 18934.19

Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture))
' Displays 18934

doubleNumber = -1898300.1987
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture))  
' Displays -1898300.2

Console.WriteLine(doubleNumber.ToString("F3", _ 
                  CultureInfo.CreateSpecificCulture("es-ES")))
' Displays -1898300,199                        
int integerNumber;
integerNumber = 17843;
Console.WriteLine(integerNumber.ToString("F", 
                  CultureInfo.InvariantCulture));
// Displays 17843.00

integerNumber = -29541;
Console.WriteLine(integerNumber.ToString("F3", 
                  CultureInfo.InvariantCulture));
// Displays -29541.000

double doubleNumber;
doubleNumber = 18934.1879;
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture));
// Displays 18934.19

Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture));
// Displays 18934

doubleNumber = -1898300.1987;
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture));  
// Displays -1898300.2

Console.WriteLine(doubleNumber.ToString("F3", 
                  CultureInfo.CreateSpecificCulture("es-ES")));
// Displays -1898300,199                        

Zurück zur Tabelle

Der allgemeine Formatbezeichner "G"

Der allgemeine Formatbezeichner "G" konvertiert eine Zahl abhängig vom ihrem Typ und dem Vorhandensein einer Genauigkeitsangabe in eine möglichst kompakte Festkomma- oder wissenschaftliche Notation. Die Genauigkeitsangabe definiert die maximale Anzahl von signifikanten Stellen, die in der Ergebniszeichenfolge angezeigt werden können. Wenn die Genauigkeitsangabe fehlt oder 0 (null) ist, wird die Standardgenauigkeit über den Typ der Zahl festgelegt (siehe folgende Tabelle).

Numerischer Typ

Standardgenauigkeit

Byte oder SByte

3 Stellen

Int16 oder UInt16

5 Stellen

Int32 oder UInt32

10 Stellen

Int64

19 Stellen

UInt64

20 Stellen

BigInteger

29 Stellen

Single

7 Stellen

Double

15 Stellen

Decimal

29 Stellen

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 nach dem Dezimaltrennzeichen 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.

Wenn die Zahl jedoch eine Decimal ist und kein Genauigkeitsspezifizierer angegeben wurde, wird die Festkommanotation in jedem Fall verwendet und nachfolgende Nullen bleiben erhalten.

Bei Verwendung der wissenschaftlichen Notation wird dem Exponenten im Ergebnis "E" vorangestellt, wenn der Formatbezeichner "G" ist, oder "e", wenn der Formatbezeichner "g" ist. Der Exponent enthält mindestens zwei Ziffern. Dies stellt einen Unterschied zum wissenschaftlichen Notationsformat dar, das vom exponentiellen Formatbezeichner erzeugt wird und mindestens drei Ziffern im Exponenten verwendet.

Die Ergebniszeichenfolge wird von den Formatierungsinformationen des aktuellen NumberFormatInfo-Objekts beeinflusst. In der folgenden Tabellen sind die NumberFormatInfo-Eigenschaften aufgeführt, die die Formatierung der Ergebniszeichenfolge steuern.

NumberFormatInfo-Eigenschaft

Beschreibung

NegativeSign

Definiert die Zeichenfolge, die angibt, dass eine Zahl negativ ist.

NumberDecimalSeparator

Definiert die Zeichenfolge, die ganze Zahlen von Dezimalzahlen trennt.

NumberDecimalDigits

Definiert die Standardanzahl von Dezimalzahlen. Dieser Wert kann mit der Genauigkeitsangabe überschrieben werden.

PositiveSign

Definiert die Zeichenfolge, die angibt, dass ein Exponent positiv ist.

Im folgenden Beispiel werden gemischte Gleitkommawerte mit dem allgemeinen Formatbezeichner formatiert.

Dim number As Double

number = 12345.6789      
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays  12345.6789
Console.WriteLine(number.ToString("G", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 12345,6789

Console.WriteLine(number.ToString("G7", CultureInfo.InvariantCulture))
' Displays 12345.68 

number = .0000023
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 2.3E-06       
Console.WriteLine(number.ToString("G", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 2,3E-06

number = .0023
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays 0.0023

number = 1234
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture))
' Displays 1.2E+03

number = Math.Pi
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture))
' Displays 3.1416    
double number;

number = 12345.6789;      
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays  12345.6789
Console.WriteLine(number.ToString("G", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 12345,6789

Console.WriteLine(number.ToString("G7", CultureInfo.InvariantCulture));
// Displays 12345.68 

number = .0000023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 2.3E-06       
Console.WriteLine(number.ToString("G", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 2,3E-06

number = .0023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 0.0023

number = 1234;
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture));
// Displays 1.2E+03

number = Math.PI;
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture));
// Displays 3.1416    

Zurück zur Tabelle

Der numerische Formatbezeichner "N"

Der numerische Formatbezeichner ("N") konvertiert eine Zahl in eine Zeichenfolge mit dem Format "-d,ddd,ddd.ddd…", wobei "-" ggf. ein negatives Zahlensymbol, "d" eine Ziffer (0-9), "'," ein Gruppentrennzeichen und "." ein Dezimaltrennzeichensymbol angibt. Die Genauigkeitsangabe gibt die gewünschte Anzahl von Ziffern nach dem Dezimaltrennzeichen an. Bei fehlender Genauigkeitsangabe wird die Anzahl der Dezimalstellen von der aktuellen NumberFormatInfo.NumberDecimalDigits-Eigenschaft definiert.

Die Ergebniszeichenfolge wird von den Formatierungsinformationen des aktuellen NumberFormatInfo-Objekts beeinflusst. In der folgenden Tabellen sind die NumberFormatInfo-Eigenschaften aufgeführt, die die Formatierung der Ergebniszeichenfolge steuern.

NumberFormatInfo-Eigenschaft

Beschreibung

NegativeSign

Definiert die Zeichenfolge, die angibt, dass eine Zahl negativ ist.

NumberNegativePattern

Definiert das Format von negativen Werten und gibt an, ob das Minuszeichen durch Klammern oder durch die NegativeSign-Eigenschaft dargestellt wird.

NumberGroupSizes

Definiert die Anzahl von ganzzahligen Ziffern, die zwischen Gruppentrennzeichen angezeigt werden.

NumberGroupSeparator

Definiert die Zeichenfolge, die Gruppen von ganzen Zahlen trennt.

NumberDecimalSeparator

Definiert die Zeichenfolge, die ganze Zahlen und Dezimalzahlen trennt.

NumberDecimalDigits

Definiert die Standardanzahl von Dezimalzahlen. Dieser Wert kann mit einer Genauigkeitsangabe überschrieben werden.

Im folgenden Beispiel werden gemischte Gleitkommawerte mit dem Zahlenformatbezeichner formatiert.

Dim dblValue As Double = -12445.6789
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture))
' Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1", _
                  CultureInfo.CreateSpecificCulture("sv-SE")))
' Displays -12 445,7

Dim intValue As Integer = 123456789
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture))
' Displays 123,456,789.0 
double dblValue = -12445.6789;
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture));
// Displays -12,445.68
Console.WriteLine(dblValue.ToString("N1", 
                  CultureInfo.CreateSpecificCulture("sv-SE")));
// Displays -12 445,7

int intValue = 123456789;
Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture));
// Displays 123,456,789.0 

Zurück zur Tabelle

Der Prozentformatbezeichner "P"

Der Prozentformatbezeichner "P" multipliziert eine Zahl mit 100 und konvertiert sie in eine Zeichenfolge, die einen Prozentsatz darstellt. Die Genauigkeitsangabe gibt die gewünschte Anzahl von Dezimalstellen an. Bei fehlender Genauigkeitsangabe wird die Standardgenauigkeit für Zahlen verwendet, die von der aktuellen PercentDecimalDigits-Eigenschaft angegeben wird.

In der folgenden Tabelle sind die NumberFormatInfo-Eigenschaften aufgeführt, die die Formatierung der zurückgegebenen Zeichenfolge steuern.

NumberFormatInfo-Eigenschaft

Beschreibung

PercentPositivePattern

Definiert die Platzierung des Prozentsymbols für positive Werte.

PercentNegativePattern

Definiert die Platzierung des Prozentsymbols sowie des Minuszeichens für negative Werte.

NegativeSign

Definiert die Zeichenfolge, die angibt, dass eine Zahl negativ ist.

PercentSymbol

Definiert das Prozentsymbol.

PercentDecimalDigits

Definiert die Standardanzahl von Dezimalstellen in einem Prozentwert. Dieser Wert kann mit der Genauigkeitsangabe überschrieben werden.

PercentDecimalSeparator

Definiert die Zeichenfolge, die ganze Zahlen und Dezimalzahlen trennt.

PercentGroupSeparator

Definiert die Zeichenfolge, die Gruppen von ganzen Zahlen trennt.

PercentGroupSizes

Definiert die Anzahl von ganzzahligen Ziffern, die in einer Gruppe angezeigt werden.

Im folgenden Beispiel werden gemischte Gleitkommawerte mit dem Prozentformatbezeichner formatiert.

Dim number As Double = .2468013
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture))
' Displays 24.68 %
Console.WriteLine(number.ToString("P", _
                  CultureInfo.CreateSpecificCulture("hr-HR")))
' Displays 24,68%     
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture))
' Displays 24.7 %
double number = .2468013;
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture));
// Displays 24.68 %
Console.WriteLine(number.ToString("P", 
                  CultureInfo.CreateSpecificCulture("hr-HR")));
// Displays 24,68%     
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture));
// Displays 24.7 %

Zurück zur Tabelle

Der Schleifenformatbezeichner "R"

Der Schleifenbezeichner "R" stellt sicher, dass ein in eine Zeichenfolge konvertierter numerischer Wert wieder in den gleichen numerischen Wert rückkonvertiert wird. Dieses Format wird nur für folgende Typen unterstützt: Single, Double und BigInteger.

Wenn ein BigInteger-Wert mit diesem Bezeichner formatiert wird, enthält seine Zeichenfolgendarstellung alle signifikanten Stellen im BigInteger-Wert. Wenn ein Single-Wert oder ein Double-Wert mit diesem Bezeichner formatiert wird, wird der Wert zuerst mit dem allgemeinen Format getestet, wobei Double mit einer Genauigkeit von 15 Stellen und Single mit einer Genauigkeit von 7 Stellen dargestellt wird. 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 jedoch nicht in den gleichen Wert rückkonvertiert werden kann, wird der Wert mit einer Genauigkeit von 17 Ziffern für Double und 9 Ziffern für Single formatiert.

Eine Genauigkeitsangabe kann zwar vorhanden sein, sie wird jedoch ignoriert. Bei diesem Bezeichner hat die Rückkonvertierbarkeit höhere Priorität als die Genauigkeit.

Die Ergebniszeichenfolge wird von den Formatierungsinformationen des aktuellen NumberFormatInfo-Objekts beeinflusst. In der folgenden Tabellen sind die NumberFormatInfo-Eigenschaften aufgeführt, die die Formatierung der Ergebniszeichenfolge steuern.

NumberFormatInfo-Eigenschaft

Beschreibung

NegativeSign

Definiert die Zeichenfolge, die angibt, dass eine Zahl negativ ist.

NumberDecimalSeparator

Definiert die Zeichenfolge, die ganze Zahlen von Dezimalzahlen trennt.

PositiveSign

Definiert die Zeichenfolge, die angibt, dass ein Exponent positiv ist.

Im folgenden Beispiel wird Double-Werte mit dem Schleifenformatbezeichner formatiert.

Dim value As Double

value = Math.Pi
Console.WriteLine(value.ToString("r"))
' Displays 3.1415926535897931
Console.WriteLine(value.ToString("r", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 3,1415926535897931
value = 1.623e-21
Console.WriteLine(value.ToString("r"))
' Displays 1.623E-21
double value;

value = Math.PI;
Console.WriteLine(value.ToString("r"));
// Displays 3.1415926535897931
Console.WriteLine(value.ToString("r", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 3,1415926535897931
value = 1.623e-21;
Console.WriteLine(value.ToString("r"));
// Displays 1.623E-21

Zurück zur Tabelle

Der Hexadezimal-Formatbezeichner "X"

Der Hexadezimal-Formatbezeichner "X" konvertiert eine Zahl in eine Zeichenfolge von Hexadezimalzahlen. Die Schreibweise des Formatbezeichners gibt an, ob Groß- oder Kleinbuchstaben für Hexadezimalzahlen verwendet werden sollen, die größer als 9 sind. Verwenden Sie z. B. "X" für "ABCDEF", und "x" für "abcdef". Dieses Format wird nur bei ganzzahligen Typen unterstützt.

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.

Die Ergebniszeichenfolge wird von den Formatierungsinformationen des aktuellen NumberFormatInfo-Objekts nicht beeinflusst.

Im folgenden Beispiel wird Int32-Werte mit dem Hexadezimal-Formatbezeichner formatiert.

Dim value As Integer 

value = &h2045e
Console.WriteLine(value.ToString("x"))
' Displays 2045e
Console.WriteLine(value.ToString("X"))
' Displays 2045E
Console.WriteLine(value.ToString("X8"))
' Displays 0002045E

value = 123456789
Console.WriteLine(value.ToString("X"))
' Displays 75BCD15
Console.WriteLine(value.ToString("X2"))
' Displays 75BCD15
int value; 

value = 0x2045e;
Console.WriteLine(value.ToString("x"));
// Displays 2045e
Console.WriteLine(value.ToString("X"));
// Displays 2045E
Console.WriteLine(value.ToString("X8"));
// Displays 0002045E

value = 123456789;
Console.WriteLine(value.ToString("X"));
// Displays 75BCD15
Console.WriteLine(value.ToString("X2"));
// Displays 75BCD15

Zurück zur Tabelle

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. Sie stellt Werte zur Steuerung der Formatierung bereit. Auf Computern mit anderen Einstellungen werden andere 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 den CultureInfo.CultureInfo(String, Boolean)-Konstruktor verwenden, um ein CultureInfo-Objekt zu erstellen, das die Anpassungen eines Systems nicht wiedergibt.

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, UInt64 und BigInteger. 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 bestimmte numerische Typen (Double und Int32) verwendet. Die Ergebnisse sind jedoch für alle numerischen Basistypen (Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, BigInteger, Decimal und Single) ähnlich.

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.0).ToString("P02", ci)); // Displays "P: 83.95 %"
      Console.WriteLine("X: 0x{0}", 
              integral.ToString("X", ci));           // Displays "X: 0x20CB"
      Console.WriteLine();
   }
}

Siehe auch

Aufgaben

Gewusst wie: Auffüllen einer Zahl mit führenden Nullen

Referenz

NumberFormatInfo

Konzepte

Benutzerdefinierte Zahlenformatzeichenfolgen

Formatierung von Typen

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

März 2011

Ein Link zum Formathilfsprogramm wurde hinzugefügt.

Informationsergänzung.

Juli 2010

Anmerkung, dass mit der Standardformatzeichenfolge "C" in positiver Richtung gerundet wird.

Kundenfeedback.