Benutzerdefinierte Zahlenformatzeichenfolgen
Eine von Ihnen erstellte und aus einem oder mehreren benutzerdefinierten Zahlenformatbezeichnern bestehende benutzerdefinierte Zahlenformatzeichenfolge definiert, wie numerische Daten formatiert werden. Eine benutzerdefinierte Zahlenformatzeichenfolge wird wie jede Zeichenfolge definiert, bei der es sich nicht um eine standardmäßige Zahlenformatzeichenfolge handelt.
In der folgenden Tabelle werden die benutzerdefinierten Zahlenformatbezeichner beschrieben. Beispiele für die von den einzelnen Formatbezeichnern erstellte Ausgabe finden Sie unter Beispiele für die Ausgabe benutzerdefinierter Zahlenformatzeichenfolgen. Weitere Informationen finden Sie in den Hinweisen unterhalb der Tabelle.
Formatbezeichner | Name | Beschreibung |
---|---|---|
0 |
0-Platzhalter |
Wenn der zu formatierende Wert über eine Ziffer an der Stelle verfügt, an der die '0' in der Formatzeichenfolge steht, wird diese Ziffer in die Ergebniszeichenfolge kopiert. Die Positionen der '0', die am weitesten links vor dem Dezimaltrennzeichen steht, und der '0', die am weitesten rechts hinter dem Dezimaltrennzeichen steht, bestimmen den Bereich der Ziffern, die immer in der Ergebniszeichenfolge enthalten sind. Mit dem Bezeichner "00" wird der Wert immer auf die direkt dem Dezimaltrennzeichen vorausgehende Zahl aufgerundet. Eine Formatierung des Werts 34.5 mit "00" ergibt z. B. den Wert 35. |
# |
Ziffernplatzhalter |
Wenn der zu formatierende Wert über eine Ziffer an der Stelle verfügt, an der '#' in der Formatzeichenfolge steht, wird diese Ziffer in die Ergebniszeichenfolge kopiert. Andernfalls wird an dieser Position nichts in der Ergebniszeichenfolge gespeichert. Beachten Sie, dass dieser Bezeichner nie das '0'-Zeichen anzeigt, wenn es sich nicht um eine signifikante Ziffer handelt, auch wenn '0' die einzige Ziffer in der Zeichenfolge ist. Das '0'-Zeichen wird angezeigt, wenn es sich um eine signifikante Ziffer in der angezeigten Zahl handelt. Mit der Formatzeichenfolge "##" wird der Wert immer auf die direkt dem Dezimaltrennzeichen vorausgehende Zahl aufgerundet. Eine Formatierung des Werts 34.5 mit "##" ergibt z. B. den Wert 35. |
. |
Dezimaltrennzeichen |
Das erste '.'-Zeichen in der Formatzeichenfolge bestimmt die Position des Dezimaltrennzeichens im formatierten Wert. Alle weiteren '.'-Zeichen werden ignoriert. Das für das Dezimaltrennzeichen verwendete Zeichen wird durch die NumberDecimalSeparator-Eigenschaft der NumberFormatInfo bestimmt, die die Formatierung steuert. |
, |
Tausendertrennzeichen und Zahlenskalierung |
Das Zeichen ',' dient als Bezeichner für Tausendertrennzeichen und für Zahlenskalierung. Bezeichner für Tausendertrennzeichen: Wenn ein oder mehrere ','-Zeichen zwischen zwei Ziffernplatzhaltern (0 oder #) angegeben sind, die die ganzzahligen Ziffern einer Zahl formatieren, wird zwischen jeder Zahlengruppe im ganzzahligen Teil der Ausgabe ein Gruppentrennzeichen eingefügt. Die NumberGroupSeparator-Eigenschaft und die NumberGroupSizes-Eigenschaft des aktuellen NumberFormatInfo-Objekts bestimmen das als Zahlengruppentrennzeichen verwendete Zeichen und die Größe der einzelnen Zahlengruppen. Wenn z. B. zum Formatieren der Zahl 1000 die Zeichenfolge "#,#" und die invariante Kultur verwendet werden, lautet die Ausgabe "1,000". Bezeichner für Zahlenskalierung: Wenn direkt links neben dem expliziten oder impliziten Dezimaltrennzeichen ein oder mehrere ','-Zeichen angegeben sind, wird die zu formatierende Zahl bei jedem Vorkommen eines Bezeichners für Zahlenskalierung durch 1000 dividiert. Wenn z. B. zum Formatieren der Zahl 100 Millionen die Zeichenfolge "0,," verwendet wird, lautet die Ausgabe "100". Sie können in der gleichen Formatzeichenfolge sowohl Bezeichner für Tausendertrennzeichen als auch für Zahlenskalierung verwenden. Wenn z. B. zum Formatieren der Zahl 1 Milliarde die Zeichenfolge "#,0,," und die invariante Kultur verwendet werden, lautet die Ausgabe "1,000". |
% |
Prozentplatzhalter |
Wenn eine Formatzeichenfolge ein '%'-Zeichen enthält, wird die Zahl vor dem Formatieren mit 100 multipliziert. Das entsprechende Symbol wird in der Zahl an der Stelle eingefügt, an der '%' in der Formatzeichenfolge steht. Das verwendete Prozentzeichen ist von der aktuellen NumberFormatInfo-Klasse abhängig. |
E0 E+0 E-0 e0 e+0 e-0 |
Wissenschaftliche Notation |
Wenn die Formatzeichenfolge die Zeichenfolgen "E", "E+", "E-", "e", "e+" oder "e-" enthält und direkt danach mindestens ein '0'-Zeichen folgt, wird die Zahl mit der wissenschaftlichen Notation formatiert und ein 'E' bzw. 'e' zwischen der Zahl und dem Exponenten eingefügt. Die Anzahl der '0'-Zeichen nach dem Bezeichner für die wissenschaftliche Notation bestimmt die Mindestanzahl von Ziffern, die für den Exponenten ausgegeben werden. Das "E+"-Format und das "e+"-Format geben an, dass immer ein Vorzeichen (Plus oder Minus) vor dem Exponenten steht. Die Formate "E", "E-", "e" oder "e-" geben an, dass nur vor negativen Exponenten ein Vorzeichen steht. |
\ |
Escapezeichen |
In C# und for C++ wird das auf den umgekehrten Schrägstrich folgende Zeichen in der Formatzeichenfolge als Escapesequenz interpretiert. Es wird mit herkömmlichen Formatzeichenfolgen wie '\n' (neue Zeile) verwendet. In einigen Sprachen muss vor dem Excapezeichen aber weiteres Escapezeichen stehen, wenn es als Literal verwendet wird. Andernfalls interpretiert der Compiler das Zeichen als Escapesequenz. Verwenden Sie die Zeichenfolge "\\", um '\' anzuzeigen. Beachten Sie, dass dieses Escapezeichen in Visual Basic nicht unterstützt wird, ControlChars stellt jedoch die gleichen Funktionen bereit. |
'ABC' "ABC" |
Zeichenfolgenliteral |
Zeichen, die in einfachen bzw. doppelten Anführungszeichen stehen, werden in die Ergebniszeichenfolge kopiert, ohne die Formatierung zu beeinflussen. |
; |
Abschnittstrennzeichen |
Mit dem ';'-Zeichen werden Abschnitte für positive und negative Zahlen sowie Nullen in der Formatzeichenfolge voneinander getrennt. |
Sonstige |
Alle anderen Zeichen |
Jedes andere Zeichen wird in die Ergebniszeichenfolge kopiert, ohne die Formatierung zu beeinflussen. |
Hinweise
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.
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.
Rundung bei Formatzeichenfolgen mit Festkomma
Bei Formatzeichenfolgen mit Festkomma (d. h. Formatzeichenfolgen, die keine Zeichen im wissenschaftlichen Notationsformat enthalten) werden die Zahlen auf die Anzahl von Dezimalstellen gerundet, die rechts neben dem Dezimaltrennzeichen als Ziffernplatzhalter vorhanden sind. Wenn die Formatzeichenfolge kein Dezimaltrennzeichen enthält, wird die Zahl auf die nächste ganze Zahl gerundet. Wenn die Zahl über mehr Ziffern verfügt, als Ziffernplatzhalter links neben dem Dezimaltrennzeichen stehen, werden die zusätzlichen Ziffern direkt vor dem ersten Ziffernplatzhalter in die Ergebniszeichenfolge kopiert.
Abschnittstrennzeichen und bedingte Formatierung
Je nachdem, ob der Wert positiv, negativ oder 0 ist, können unterschiedliche Formatierungen angewendet werden. Dafür kann eine benutzerdefinierte Formatzeichenfolge bis zu drei durch Semikolons getrennte Abschnitte enthalten. Diese Abschnitte werden in der folgenden Tabelle beschrieben.
Anzahl der Abschnitte | Beschreibung |
---|---|
Ein Abschnitt |
Die Formatzeichenfolge gilt für alle Werte. |
Zwei Abschnitte |
Der erste Abschnitt gilt für positive Werte und Nullen, der zweite Abschnitt für negative Werte. Wenn die zu formatierende Zahl negativ ist, aber nach dem Runden entsprechend dem Format im zweiten Abschnitt 0 ist, wird die resultierende 0 entsprechend dem ersten Abschnitt formatiert. |
Drei Abschnitte |
Der erste Abschnitt gilt für positive Werte, der zweite Abschnitt für negative Werte und der dritte Abschnitt für Nullen. Wenn der zweite Abschnitt leer ist (zwischen den Semikolons wird nichts angegeben), wird der erste Abschnitt auf alle Werte angewendet, die nicht 0 (null) sind. Wenn die zu formatierende Zahl nicht 0 ist, aber nach dem Runden entsprechend dem Format im ersten oder im zweiten Abschnitt 0 ist, wird die resultierende 0 entsprechend dem dritten Abschnitt formatiert. |
Abschnittstrennzeichen ignorieren alle bereits vorhandenen Formatierungen für Zahlen, wenn der letzte Wert formatiert wird. Negative Werte werden z. B. immer ohne Minuszeichen angezeigt, wenn Abschnittstrennzeichen verwendet werden. Wenn der letzte formatierte Wert ein Minuszeichen aufweisen soll, muss das Minuszeichen explizit als Teil des benutzerdefinierten Formatbezeichners aufgenommen werden.
Die folgende Codefragmente veranschaulichen, wie Abschnittstrennzeichen zum Erstellen von formatierten Zeichenfolgen verwendet werden.
Dim MyPos As Double = 19.95
Dim MyNeg As Double = -19.95
Dim MyZero As Double = 0
' In the U.S. English culture, MyString has the value: $19.95.
Dim MyString As String = MyPos.ToString("$#,##0.00;($#,##0.00);Zero")
' In the U.S. English culture, MyString has the value: ($19.95).
' The minus sign is omitted by default.
MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero")
' In the U.S. English culture, MyString has the value: Zero.
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero")
double MyPos = 19.95, MyNeg = -19.95, MyZero = 0.0;
// In the U.S. English culture, MyString has the value: $19.95.
string MyString = MyPos.ToString("$#,##0.00;($#,##0.00);Zero");
// In the U.S. English culture, MyString has the value: ($19.95).
// The minus sign is omitted by default.
MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero");
// In the U.S. English culture, MyString has the value: Zero.
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero");
Zwei Beispiele für benutzerdefinierte Formate
Die folgenden Codefragmente veranschaulichen die benutzerdefinierte Formatierung numerischer Daten. In beiden Fällen werden die numerischen Daten in der benutzerdefinierten Formatzeichenfolge durch einen Ziffernplatzhalter (#
) angezeigt. Alle anderen Zeichen werden in die Ausgabe kopiert.
Dim myDouble As Double = 1234567890
Dim myString As String = myDouble.ToString( "(###) ### - ####" )
' The value of myString is "(123) 456 – 7890".
Dim MyInt As Integer = 42
MyString = MyInt.ToString( "My Number = #" )
' In the U.S. English culture, MyString has the value:
' "My Number = 42".
Double myDouble = 1234567890;
String myString = myDouble.ToString( "(###) ### - ####" );
// The value of myString is "(123) 456 – 7890".
int MyInt = 42;
MyString = MyInt.ToString( "My Number = #" );
// In the U.S. English culture, MyString has the value:
// "My Number = 42".
Siehe auch
Referenz
Konzepte
Zahlenformatzeichenfolgen
Beispiele für die Ausgabe benutzerdefinierter Zahlenformatzeichenfolgen
Standardmäßige Zahlenformatzeichenfolgen