Decimal.Parse Methode

Definition

Wandelt die angegebene Zeichenfolgendarstellung einer Zahl in ihre Decimal-Entsprechung um.

Überlädt

Parse(String)

Wandelt die angegebene Zeichenfolgendarstellung einer Zahl in ihre Decimal-Entsprechung um.

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Analysiert eine Spanne von UTF-8-Zeichen in einen Wert.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Analysiert eine Spanne von Zeichen in einen Wert.

Parse(String, NumberStyles)

Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil in die Decimal-Entsprechung.

Parse(String, IFormatProvider)

Konvertiert die Zeichenfolgendarstellung einer Zahl unter Verwendung der angegebenen kulturspezifischen Formatierungsinformationen in die Decimal-Entsprechung.

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Analysiert eine Spanne von UTF-8-Zeichen in einen Wert.

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Konvertiert die Spannendarstellung einer Zahl unter Verwendung des angegebenen Stils und kulturspezifischer Formatierungsinformationen in die Decimal-Entsprechung.

Parse(String, NumberStyles, IFormatProvider)

Konvertiert die Zeichenfolgendarstellung einer Zahl unter Verwendung des angegebenen Stils und kulturspezifischer Formatierungsinformationen in die Decimal-Entsprechung.

Parse(String)

Wandelt die angegebene Zeichenfolgendarstellung einer Zahl in ihre Decimal-Entsprechung um.

public:
 static System::Decimal Parse(System::String ^ s);
public static decimal Parse (string s);
static member Parse : string -> decimal
Public Shared Function Parse (s As String) As Decimal

Parameter

s
String

Die Zeichenfolgendarstellung der zu konvertierenden Zahl.

Gibt zurück

Die Entsprechung der in s enthaltenen Zahl.

Ausnahmen

s ist null.

s weist nicht das richtige Format auf.

s stellt eine Zahl dar, die kleiner als Decimal.MinValue oder größer als Decimal.MaxValue ist.

Beispiele

Im folgenden Codebeispiel wird die Parse(String) -Methode verwendet, um Zeichenfolgendarstellungen von Decimal Werten zu analysieren.

string value;
decimal number;
// Parse an integer with thousands separators.
value = "16,523,421";
number = Decimal.Parse(value);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '16,523,421' converted to 16523421.

// Parse a floating point value with thousands separators
value = "25,162.1378";
number = Decimal.Parse(value);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '25,162.1378' converted to 25162.1378.

// Parse a floating point number with US currency symbol.
value = "$16,321,421.75";
try
{
   number = Decimal.Parse(value);
   Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse '{0}'.", value);
}
// Displays:
//    Unable to parse '$16,321,421.75'.

// Parse a number in exponential notation
value = "1.62345e-02";
try
{
   number = Decimal.Parse(value);
   Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse '{0}'.", value);
}
// Displays:
//    Unable to parse '1.62345e-02'.
// Parse an integer with thousands separators.
let value = "16,523,421"
let number = Decimal.Parse value
printfn $"'{value}' converted to {number}."
// Displays:
//    '16,523,421' converted to 16523421.

// Parse a floating point value with thousands separators
let value = "25,162.1378"
let number = Decimal.Parse value
printfn $"'{value}' converted to {number}."
// Displays:
//    '25,162.1378' converted to 25162.1378.

// Parse a floating point number with US currency symbol.
let value = "$16,321,421.75"
try
    let number = Decimal.Parse value
    printfn $"'{value}' converted to {number}."
with :? FormatException ->
    printfn $"Unable to parse '{value}'."
// Displays:
//    Unable to parse '$16,321,421.75'.

// Parse a number in exponential notation
let value = "1.62345e-02"
try
    let number = Decimal.Parse value
    printfn $"'{value}' converted to {number}."
with :? FormatException ->
    printfn $"Unable to parse '{value}'."
// Displays:
//    Unable to parse '1.62345e-02'.
Dim value As String
Dim number As Decimal

' Parse an integer with thousands separators. 
value = "16,523,421"
number = Decimal.Parse(value)
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays: 
'    '16,523,421' converted to 16523421.

' Parse a floating point value with thousands separators
value = "25,162.1378"
number = Decimal.Parse(value)
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays:
'    '25,162.1378' converted to 25162.1378.

' Parse a floating point number with US currency symbol.
value = "$16,321,421.75"
Try
   number = Decimal.Parse(value)
   Console.WriteLine("'{0}' converted to {1}.", value, number)
Catch e As FormatException
   Console.WriteLine("Unable to parse '{0}'.", value)
End Try
' Displays:
'    Unable to parse '$16,321,421.75'.  

' Parse a number in exponential notation
value = "1.62345e-02"
Try
   number = Decimal.Parse(value)
   Console.WriteLine("'{0}' converted to {1}.", value, number)
Catch e As FormatException
   Console.WriteLine("Unable to parse '{0}'.", value)
End Try
' Displays: 
'    Unable to parse '1.62345e-02'.

Hinweise

Parameter s enthält eine Nummer des Formulars:

[ws] [sign] [Digits,]digits[.fractional-digits][ws]

Elemente in eckigen Klammern ([ und ]) sind optional. In der folgenden Tabelle wird jedes Element beschrieben.

Element Beschreibung
ws Optionaler Leerraum.
sign Ein optionales Zeichen.
Zahlen Eine Sequenz von Ziffern im Bereich von 0 bis 9.
, Ein kulturspezifisches Tausendertrennzeichen.
. Ein kulturspezifisches Dezimaltrennzeichen.
Bruchstellen Eine Sequenz von Ziffern im Bereich von 0 bis 9.

Der Parameter s wird mithilfe des Stils NumberStyles.Number interpretiert. Dies bedeutet, dass Leerzeichen und Tausendertrennzeichen zulässig sind, Währungssymbole jedoch nicht. Um explizit die Elemente (z. B. Währungssymbole, Tausendertrennzeichen und Leerzeichen) zu definieren, die in svorhanden sein können, verwenden Sie entweder die Decimal.Parse(String, NumberStyles) -Methode oder die Decimal.Parse(String, NumberStyles, IFormatProvider) -Methode.

Der Parameter s wird mithilfe der Formatierungsinformationen in einem NumberFormatInfo für die aktuelle Systemkultur initialisierten analysiert. Weitere Informationen finden Sie unter CurrentInfo. Verwenden Sie Decimal.Parse(String, IFormatProvider) die - oder Decimal.Parse(String, NumberStyles, IFormatProvider) -Methode, um eine Zeichenfolge mithilfe der Formatierungsinformationen einer anderen Kultur zu analysieren.

Bei Bedarf wird der Wert von s durch Rundung auf den nächsten gerundet.

Ein Decimal hat eine Genauigkeit von 29 Ziffern. Wenn s eine Zahl darstellt, die mehr als 29 Ziffern hat, aber einen Teilbruch aufweist und innerhalb des Bereichs von MaxValue und MinValueliegt, wird die Zahl durch Rundung auf 29 Ziffern gerundet, nicht abgeschnitten.

Wenn während eines Analysevorgangs ein Trennzeichen im s Parameter gefunden wird und die entsprechenden Währungs- oder Zahlendezimal- und Gruppentrennzeichen identisch sind, wird beim Analysevorgang davon ausgegangen, dass das Trennzeichen ein Dezimaltrennzeichen und kein Gruppentrennzeichen ist. Weitere Informationen zu Trennzeichen finden Sie unter CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatorund NumberGroupSeparator.

Weitere Informationen

Gilt für:

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Analysiert eine Spanne von UTF-8-Zeichen in einen Wert.

public:
 static System::Decimal Parse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider) = IUtf8SpanParsable<System::Decimal>::Parse;
public static decimal Parse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider);
static member Parse : ReadOnlySpan<byte> * IFormatProvider -> decimal
Public Shared Function Parse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider) As Decimal

Parameter

utf8Text
ReadOnlySpan<Byte>

Die Spanne der zu analysierenden UTF-8-Zeichen.

provider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu utf8Text bereitstellt.

Gibt zurück

Das Ergebnis der Analyse utf8Textvon .

Implementiert

Gilt für:

Parse(ReadOnlySpan<Char>, IFormatProvider)

Analysiert eine Spanne von Zeichen in einen Wert.

public:
 static System::Decimal Parse(ReadOnlySpan<char> s, IFormatProvider ^ provider) = ISpanParsable<System::Decimal>::Parse;
public static decimal Parse (ReadOnlySpan<char> s, IFormatProvider? provider);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> decimal
Public Shared Function Parse (s As ReadOnlySpan(Of Char), provider As IFormatProvider) As Decimal

Parameter

s
ReadOnlySpan<Char>

Die Spanne der zu analysierenden Zeichen.

provider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu s bereitstellt.

Gibt zurück

Das Ergebnis der Analyse svon .

Implementiert

Gilt für:

Parse(String, NumberStyles)

Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil in die Decimal-Entsprechung.

public:
 static System::Decimal Parse(System::String ^ s, System::Globalization::NumberStyles style);
public static decimal Parse (string s, System.Globalization.NumberStyles style);
static member Parse : string * System.Globalization.NumberStyles -> decimal
Public Shared Function Parse (s As String, style As NumberStyles) As Decimal

Parameter

s
String

Die Zeichenfolgendarstellung der zu konvertierenden Zahl.

style
NumberStyles

Eine bitweise Kombination von NumberStyles-Werten, die die Stilelemente angeben, die in s vorhanden sein können. Ein häufig angegebener Wert ist Number.

Gibt zurück

Die Decimal-Zahl, die der in s enthaltenen Zahl entspricht, wie durch style angegeben.

Ausnahmen

s ist null.

style ist kein NumberStyles-Wert.

- oder -

style ist der AllowHexSpecifier -Wert.

s weist nicht das richtige Format auf.

s stellt eine Zahl dar, die kleiner als Decimal.MinValue oder größer als Decimal.MaxValue ist.

Beispiele

Im folgenden Codebeispiel wird die Parse(String, NumberStyles) -Methode verwendet, um die Zeichenfolgendarstellungen von Decimal Werten mithilfe der en-US-Kultur zu analysieren.

string value;
decimal number;
NumberStyles style;

// Parse string with a floating point value using NumberStyles.None.
value = "8694.12";
style = NumberStyles.None;
try
{
   number = Decimal.Parse(value, style);
   Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse '{0}'.", value);
}
// Displays:
//    Unable to parse '8694.12'.

// Parse string with a floating point value and allow decimal point.
style = NumberStyles.AllowDecimalPoint;
number = Decimal.Parse(value, style);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '8694.12' converted to 8694.12.

// Parse string with negative value in parentheses
value = "(1,789.34)";
style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands |
        NumberStyles.AllowParentheses;
number = Decimal.Parse(value, style);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '(1,789.34)' converted to -1789.34.

// Parse string using Number style
value = " -17,623.49 ";
style = NumberStyles.Number;
number = Decimal.Parse(value, style);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    ' -17,623.49 ' converted to -17623.49.
// Parse string with a floating point value using NumberStyles.None.
let value = "8694.12"
let style = NumberStyles.None
try
    let number = Decimal.Parse(value, style)
    printfn $"'{value}' converted to {number}."
with :? FormatException ->
    printfn $"Unable to parse '{value}'."
// Displays:
//    Unable to parse '8694.12'.

// Parse string with a floating point value and allow decimal point.
let style = NumberStyles.AllowDecimalPoint
let number = Decimal.Parse(value, style)
printfn $"'{value}' converted to {number}."
// Displays:
//    '8694.12' converted to 8694.12.

// Parse string with negative value in parentheses
let value = "(1,789.34)"
let style = 
    NumberStyles.AllowDecimalPoint ||| 
    NumberStyles.AllowThousands ||| 
    NumberStyles.AllowParentheses
let number = Decimal.Parse(value, style)
printfn $"'{value}' converted to {number}."
// Displays:
//    '(1,789.34)' converted to -1789.34.

// Parse string using Number style
let value = " -17,623.49 "
let style = NumberStyles.Number
let number = Decimal.Parse(value, style)
printfn $"'{value}' converted to {number}."
// Displays:
//    ' -17,623.49 ' converted to -17623.49.
Dim value As String
Dim number As Decimal
Dim style As NumberStyles

' Parse string with a floating point value using NumberStyles.None. 
value = "8694.12"
style = NumberStyles.None
Try
   number = Decimal.Parse(value, style)  
   Console.WriteLine("'{0}' converted to {1}.", value, number)
Catch e As FormatException
   Console.WriteLine("Unable to parse '{0}'.", value)
End Try
' Displays:
'    Unable to parse '8694.12'.

' Parse string with a floating point value and allow decimal point. 
style = NumberStyles.AllowDecimalPoint
number = Decimal.Parse(value, style)  
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays:
'    '8694.12' converted to 8694.12.

' Parse string with negative value in parentheses
value = "(1,789.34)"
style = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands Or _
        NumberStyles.AllowParentheses 
number = Decimal.Parse(value, style)  
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays:
'    '(1,789.34)' converted to -1789.34.

' Parse string using Number style
value = " -17,623.49 "
style = NumberStyles.Number
number = Decimal.Parse(value, style)  
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays:
'    ' -17,623.49 ' converted to -17623.49.

Hinweise

Der style Parameter definiert die Stilelemente (z. B. Tausendertrennzeichen, Leerzeichen und Währungssymbole), die s im Parameter zulässig sind, damit der Analysevorgang erfolgreich ist. Es muss sich um eine Kombination von Bitflags aus der NumberStyles Enumeration handeln. Die folgenden NumberStyles Member werden nicht unterstützt:

Abhängig vom Wert von stylekann der s Parameter die folgenden Elemente enthalten:

[ws] [$] [sign] [Digits,]digits[.fractional-digits][e[sign]digits][ws]

Elemente in eckigen Klammern ([ und ]) sind optional. In der folgenden Tabelle wird jedes Element beschrieben.

Element Beschreibung
ws Optionaler Leerraum. Leerzeichen können am Anfang von s angezeigt werden, wenn style das NumberStyles.AllowLeadingWhite Flag enthalten ist, und es kann am Ende von s angezeigt werden, wenn style das NumberStyles.AllowTrailingWhite Flag enthält.
$ Ein kulturspezifisches Währungssymbol. Seine Position in der Zeichenfolge wird durch die NumberFormatInfo.CurrencyNegativePattern Eigenschaften und NumberFormatInfo.CurrencyPositivePattern der aktuellen Kultur definiert. Das Währungssymbol der aktuellen Kultur kann in s angezeigt werden, wenn style das NumberStyles.AllowCurrencySymbol Flag enthält.
sign Ein optionales Zeichen. Das Zeichen kann am Anfang von s angezeigt werden, wenn style das NumberStyles.AllowLeadingSign Flag enthält, und es kann am Ende von s angezeigt werden, wenn style das NumberStyles.AllowTrailingSign Flag enthält. Klammern können in s verwendet werden, um einen negativen Wert anzugeben, wenn style das NumberStyles.AllowParentheses Flag enthalten ist.
Zahlen Eine Sequenz von Ziffern im Bereich von 0 bis 9.
, Ein kulturspezifisches Tausendertrennzeichen. Das Tausendertrennzeichen der aktuellen Kultur kann in s angezeigt werden, wenn style das NumberStyles.AllowThousands Flag enthält.
. Ein kulturspezifisches Dezimaltrennzeichen. Das Dezimalzeichensymbol der aktuellen Kultur kann in s angezeigt werden, wenn style das NumberStyles.AllowDecimalPoint Flag enthält.
Bruchstellen Eine Sequenz von Ziffern im Bereich von 0 bis 9. Bruchstellen können nur in s angezeigt werden, wenn style das NumberStyles.AllowDecimalPoint Flag enthalten ist.
e Das Zeichen "e" oder "E", das angibt, dass der Wert in exponentieller Notation dargestellt wird. Der s Parameter kann eine Zahl in exponentieller Notation darstellen, wenn style das NumberStyles.AllowExponent Flag enthalten ist.

Hinweis

Alle beendenden NUL-Zeichen (U+0000) in s werden vom Analysevorgang ignoriert, unabhängig vom Wert des style Arguments.

Eine Zeichenfolge nur mit Ziffern (die dem None Format entspricht) analysiert immer erfolgreich, wenn sie sich im Bereich des Decimal Typs befindet. Die übrigen NumberStyles Member-Steuerelementelemente, die möglicherweise in der Eingabezeichenfolge vorhanden sein müssen, aber nicht erforderlich sind. Die folgende Tabelle gibt an, wie sich einzelne NumberStyles Member auf die Elemente auswirken, die möglicherweise in svorhanden sind.

NumberStyles-Wert Zusätzlich zu Ziffern zulässige Elemente in s
None Nur das Digits-Element .
AllowDecimalPoint Die Elemente . und Bruchstellen .
AllowExponent Der s Parameter kann auch die exponentielle Notation verwenden. Dieses Flag unterstützt Werte in den FormularziffernE-Ziffern; Zusätzliche Flags sind erforderlich, um Zeichenfolgen erfolgreich mit Elementen wie positiven oder negativen Zeichen und Dezimalzeichen zu analysieren.
AllowLeadingWhite Das ws-Element am Anfang von s.
AllowTrailingWhite Das ws-Element am Ende von s.
AllowLeadingSign Das Zeichenelement am Anfang von s.
AllowTrailingSign Das Zeichenelement am Ende von s.
AllowParentheses Das Zeichenelement in Form von Klammern, die den numerischen Wert einschließen.
AllowThousands Das - Element.
AllowCurrencySymbol Das $-Element.
Currency Alle. Der s Parameter kann keine hexadezimale Zahl oder eine Zahl in exponentieller Notation darstellen.
Float Das ws-Element am Anfang oder Ende von s, zeichen am Anfang von sund das . Symbol. Der s Parameter kann auch die exponentielle Notation verwenden.
Number Die - , sign- , und . -wsElemente.
Any Alle Formatvorlagen, mit ausnahme s der Nichtdarstellung einer hexadezimalen Zahl.

Der s Parameter wird mithilfe der Formatierungsinformationen in einem NumberFormatInfo Objekt analysiert, das für die aktuelle Systemkultur initialisiert wurde. Weitere Informationen finden Sie unter CurrentInfo.

A Decimal hat eine Genauigkeit von 29 Ziffern. Wenn s eine Zahl darstellt, die mehr als 29 Ziffern hat, aber einen Bruchteil hat und sich im Bereich von MaxValue befindet MinValue, wird die Zahl gerundet, nicht abgekürzt, auf 29 Ziffern mit Rundung auf die nächste.

Wenn während eines Analysevorgangs ein Trennzeichen im s Parameter gefunden wird, styles die NumberStyles.AllowThousands Werte und NumberStyles.AllowDecimalPoint enthält und die entsprechenden Währungs- oder Zahlendezimal- und Gruppentrennzeichen identisch sind, wird beim Analysevorgang davon ausgegangen, dass es sich beim Trennzeichen um ein Dezimaltrennzeichen und nicht um ein Gruppentrennzeichen handelt. Weitere Informationen zu Trennzeichen finden Sie unter CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatorund NumberGroupSeparator.

Weitere Informationen

Gilt für:

Parse(String, IFormatProvider)

Konvertiert die Zeichenfolgendarstellung einer Zahl unter Verwendung der angegebenen kulturspezifischen Formatierungsinformationen in die Decimal-Entsprechung.

public:
 static System::Decimal Parse(System::String ^ s, IFormatProvider ^ provider);
public:
 static System::Decimal Parse(System::String ^ s, IFormatProvider ^ provider) = IParsable<System::Decimal>::Parse;
public static decimal Parse (string s, IFormatProvider provider);
public static decimal Parse (string s, IFormatProvider? provider);
static member Parse : string * IFormatProvider -> decimal
Public Shared Function Parse (s As String, provider As IFormatProvider) As Decimal

Parameter

s
String

Die Zeichenfolgendarstellung der zu konvertierenden Zahl.

provider
IFormatProvider

Ein IFormatProvider, der kulturabhängige Analyseinformationen über s bereitstellt.

Gibt zurück

Die Decimal-Zahl, die der in s enthaltenen Zahl entspricht, wie durch provider angegeben.

Implementiert

Ausnahmen

s ist null.

s weist nicht das richtige Format auf.

s stellt eine Zahl dar, die kleiner als Decimal.MinValue oder größer als Decimal.MaxValue ist.

Beispiele

Das folgende Beispiel ist der Schaltflächen-Klickereignishandler eines Webformulars. Es verwendet das von der HttpRequest.UserLanguages -Eigenschaft zurückgegebene Array, um das Gebietsschema des Benutzers zu bestimmen. Anschließend instanziiert er ein CultureInfo -Objekt, das diesem Gebietsschema entspricht. Das NumberFormatInfo Objekt, das zu diesem CultureInfo Objekt gehört, wird dann an die Parse(String, IFormatProvider) -Methode übergeben, um die Eingabe des Benutzers in einen Decimal Wert zu konvertieren.

protected void OkToDecimal_Click(object sender, EventArgs e)
{
    string locale;
    decimal number;
    CultureInfo culture;

    // Return if string is empty
    if (String.IsNullOrEmpty(this.inputNumber.Text))
        return;

    // Get locale of web request to determine possible format of number
    if (Request.UserLanguages.Length == 0)
        return;
    locale = Request.UserLanguages[0];
    if (String.IsNullOrEmpty(locale))
        return;

    // Instantiate CultureInfo object for the user's locale
    culture = new CultureInfo(locale);

    // Convert user input from a string to a number
    try
    {
        number = Decimal.Parse(this.inputNumber.Text, culture.NumberFormat);
    }
    catch (FormatException)
    {
        return;
    }
    catch (Exception)
    {
        return;
    }
    // Output number to label on web form
    this.outputNumber.Text = "Number is " + number.ToString();
}
Protected Sub OkToDecimal_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles OkToDecimal.Click
   Dim locale As String
   Dim culture As CultureInfo
   Dim number As Decimal

   ' Return if string is empty
   If String.IsNullOrEmpty(Me.inputNumber.Text) Then Exit Sub

   ' Get locale of web request to determine possible format of number
   If Request.UserLanguages.Length = 0 Then Exit Sub
   locale = Request.UserLanguages(0)
   If String.IsNullOrEmpty(locale) Then Exit Sub

   ' Instantiate CultureInfo object for the user's locale
   culture = New CultureInfo(locale)

   ' Convert user input from a string to a number
   Try
      number = Decimal.Parse(Me.inputNumber.Text, culture.NumberFormat)
   Catch ex As FormatException
      Exit Sub
   Catch ex As Exception
      Exit Sub
   End Try

   ' Output number to label on web form
   Me.outputNumber.Text = "Number is " & number.ToString()
End Sub

Hinweise

Diese Überladung der Parse(String, IFormatProvider) Methode wird häufig verwendet, um Text zu konvertieren, der auf verschiedene Arten formatiert werden kann, in einen Decimal Wert. Sie kann beispielsweise verwendet werden, um den von einem Benutzer eingegebenen Text in ein HTML-Textfeld in einen numerischen Wert zu konvertieren.

Der s Parameter enthält eine Nummer des Formulars:

[ws] [sign] [Ziffern,]Ziffern[.fractional-digits][ws]

Elemente in eckigen Klammern ([ und ]) sind optional. In der folgenden Tabelle wird jedes Element beschrieben.

Element Beschreibung
ws Optionaler Leerraum.
sign Ein optionales Zeichen.
Zahlen Eine Sequenz von Ziffern zwischen 0 und 9.
, Ein kulturspezifisches Tausendertrennzeichen.
. Ein kulturspezifisches Dezimalzeichensymbol.
Bruchstellen Eine Sequenz von Ziffern zwischen 0 und 9.

Der s Parameter wird mithilfe des Stils NumberStyles.Number interpretiert. Dies bedeutet, dass Leerzeichen und Tausendertrennzeichen zulässig sind, Währungssymbole jedoch nicht. Verwenden Sie die -Methode, um die Elemente explizit zu definieren (z. B. Währungssymbole, Tausendertrennzeichen und Leerzeichen), die Decimal.Parse(String, NumberStyles, IFormatProvider) in svorhanden sein können.

Der provider Parameter ist eine IFormatProvider Implementierung, z. B. ein - oder CultureInfo -NumberFormatInfoObjekt. Der provider Parameter liefert kulturspezifische Informationen, die beim Analysieren verwendet werden. Wenn provider gleich null ist, wird die aktuelle Threadkultur verwendet.

Ein Decimal Objekt weist eine Genauigkeit von 29 Ziffern auf. Wenn s eine Zahl darstellt, die mehr als 29 Ziffern hat, aber einen Bruchteil hat und sich im Bereich von MaxValue befindet MinValue, wird die Zahl gerundet, nicht abgekürzt, auf 29 Ziffern mit Rundung auf die nächste.

Wenn während eines Analysevorgangs ein Trennzeichen im s Parameter gefunden wird und die entsprechenden Währungs- oder Zahlendezimal- und Gruppentrennzeichen identisch sind, wird beim Analysevorgang davon ausgegangen, dass es sich beim Trennzeichen um ein Dezimaltrennzeichen und nicht um ein Gruppentrennzeichen handelt. Weitere Informationen zu Trennzeichen finden Sie unter CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatorund NumberGroupSeparator.

Weitere Informationen

Gilt für:

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Analysiert eine Spanne von UTF-8-Zeichen in einen Wert.

public static decimal Parse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Number, IFormatProvider? provider = default);
static member Parse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider -> decimal
Public Shared Function Parse (utf8Text As ReadOnlySpan(Of Byte), Optional style As NumberStyles = System.Globalization.NumberStyles.Number, Optional provider As IFormatProvider = Nothing) As Decimal

Parameter

utf8Text
ReadOnlySpan<Byte>

Die Spanne der zu analysierenden UTF-8-Zeichen.

style
NumberStyles

Eine bitweise Kombination von Zahlenformaten, die in utf8Textvorhanden sein können.

provider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu utf8Text bereitstellt.

Gibt zurück

Das Ergebnis der Analyse utf8Text.

Implementiert

Gilt für:

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Konvertiert die Spannendarstellung einer Zahl unter Verwendung des angegebenen Stils und kulturspezifischer Formatierungsinformationen in die Decimal-Entsprechung.

public static decimal Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Number, IFormatProvider? provider = default);
public static decimal Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Number, IFormatProvider provider = default);
static member Parse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider -> decimal
Public Shared Function Parse (s As ReadOnlySpan(Of Char), Optional style As NumberStyles = System.Globalization.NumberStyles.Number, Optional provider As IFormatProvider = Nothing) As Decimal

Parameter

s
ReadOnlySpan<Char>

Die Spanne mit den Zeichen, die die zu konvertierende Zahl darstellen.

style
NumberStyles

Eine bitweise Kombination von NumberStyles-Werten, die die Stilelemente angeben, die in s vorhanden sein können. Ein häufig angegebener Wert ist Number.

provider
IFormatProvider

Ein IFormatProvider-Objekt, das kulturspezifische Informationen zum Format von s bereitstellt.

Gibt zurück

Die Decimal-Zahl, die gemäß den Angaben in s und style der in provider enthaltenen Zahl entspricht.

Implementiert

Gilt für:

Parse(String, NumberStyles, IFormatProvider)

Konvertiert die Zeichenfolgendarstellung einer Zahl unter Verwendung des angegebenen Stils und kulturspezifischer Formatierungsinformationen in die Decimal-Entsprechung.

public:
 static System::Decimal Parse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider);
public:
 static System::Decimal Parse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider) = System::Numerics::INumberBase<System::Decimal>::Parse;
public static decimal Parse (string s, System.Globalization.NumberStyles style, IFormatProvider provider);
public static decimal Parse (string s, System.Globalization.NumberStyles style, IFormatProvider? provider);
static member Parse : string * System.Globalization.NumberStyles * IFormatProvider -> decimal
Public Shared Function Parse (s As String, style As NumberStyles, provider As IFormatProvider) As Decimal

Parameter

s
String

Die Zeichenfolgendarstellung der zu konvertierenden Zahl.

style
NumberStyles

Eine bitweise Kombination von NumberStyles-Werten, die die Stilelemente angeben, die in s vorhanden sein können. Ein häufig angegebener Wert ist Number.

provider
IFormatProvider

Ein IFormatProvider-Objekt, das kulturspezifische Informationen zum Format von s bereitstellt.

Gibt zurück

Die Decimal-Zahl, die gemäß den Angaben in s und style der in provider enthaltenen Zahl entspricht.

Implementiert

Ausnahmen

s weist nicht das richtige Format auf.

s stellt eine Zahl dar, die kleiner als Decimal.MinValue oder größer als Decimal.MaxValue ist.

s ist null.

style ist kein NumberStyles-Wert.

- oder -

style ist der AllowHexSpecifier-Wert.

Beispiele

Im folgenden Beispiel werden verschiedene style Parameter und provider verwendet, um die Zeichenfolgendarstellungen von Decimal Werten zu analysieren.

string value;
decimal number;
NumberStyles style;
CultureInfo provider;

// Parse string using " " as the thousands separator
// and "," as the decimal separator for fr-FR culture.
value = "892 694,12";
style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands;
provider = new CultureInfo("fr-FR");

number = Decimal.Parse(value, style, provider);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '892 694,12' converted to 892694.12.

try
{
   number = Decimal.Parse(value, style, CultureInfo.InvariantCulture);
   Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse '{0}'.", value);
}
// Displays:
//    Unable to parse '892 694,12'.

// Parse string using "$" as the currency symbol for en-GB and
// en-US cultures.
value = "$6,032.51";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
provider = new CultureInfo("en-GB");

try
{
   number = Decimal.Parse(value, style, provider);
   Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse '{0}'.", value);
}
// Displays:
//    Unable to parse '$6,032.51'.

provider = new CultureInfo("en-US");
number = Decimal.Parse(value, style, provider);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '$6,032.51' converted to 6032.51.
// Parse string using " " as the thousands separator
// and "," as the decimal separator for fr-FR culture.
let value = "892 694,12"
let style = NumberStyles.AllowDecimalPoint ||| NumberStyles.AllowThousands
let provider = CultureInfo "fr-FR"

let number = Decimal.Parse(value, style, provider)
printfn $"'{value}' converted to {number}."
// Displays:
//    '892 694,12' converted to 892694.12.

try
    let number = Decimal.Parse(value, style, CultureInfo.InvariantCulture)
    printfn $"'{value}' converted to {number}."
with :? FormatException ->
    printfn $"Unable to parse '{value}'."
// Displays:
//    Unable to parse '892 694,12'.

// Parse string using "$" as the currency symbol for en-GB and
// en-US cultures.
let value = "$6,032.51"
let style = NumberStyles.Number ||| NumberStyles.AllowCurrencySymbol
let provider = CultureInfo "en-GB"

try
    let number = Decimal.Parse(value, style, provider)
    printfn $"'{value}' converted to {number}."
with :? FormatException ->
    printfn $"Unable to parse '{value}'."
// Displays:
//    Unable to parse '$6,032.51'.

let provider = CultureInfo "en-US"
let number = Decimal.Parse(value, style, provider)
printfn $"'{value}' converted to {number}."
// Displays:
//    '$6,032.51' converted to 6032.51.
Dim value As String
Dim number As Decimal
Dim style As NumberStyles
Dim provider As CultureInfo

' Parse string using " " as the thousands separator 
' and "," as the decimal separator for fr-FR culture.
value = "892 694,12"
style = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands
provider = New CultureInfo("fr-FR")

number = Decimal.Parse(value, style, provider)  
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays: 
'    '892 694,12' converted to 892694.12.

Try
   number = Decimal.Parse(value, style, CultureInfo.InvariantCulture)  
   Console.WriteLine("'{0}' converted to {1}.", value, number)
Catch e As FormatException
   Console.WriteLine("Unable to parse '{0}'.", value)
End Try
' Displays: 
'    Unable to parse '892 694,12'.  

' Parse string using "$" as the currency symbol for en-GB and
' en-US cultures.
value = "$6,032.51"
style = NumberStyles.Number Or NumberStyles.AllowCurrencySymbol
provider = New CultureInfo("en-GB")

Try
   number = Decimal.Parse(value, style, provider)  
   Console.WriteLine("'{0}' converted to {1}.", value, number)
Catch e As FormatException
   Console.WriteLine("Unable to parse '{0}'.", value)
End Try
' Displays: 
'    Unable to parse '$6,032.51'.

provider = New CultureInfo("en-US")
number = Decimal.Parse(value, style, provider)  
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays: 
'    '$6,032.51' converted to 6032.51.

Hinweise

Der style Parameter definiert das zulässige Format des s Parameters, damit der Analysevorgang erfolgreich ist. Es muss sich um eine Kombination von Bitflags aus der NumberStyles Enumeration handeln. Die folgenden NumberStyles Member werden nicht unterstützt:

Abhängig vom Wert von stylekann der s Parameter die folgenden Elemente enthalten:

[ws] [$] [sign] [Digits,]digits[.fractional-digits][e[sign]digits][ws]

Elemente in eckigen Klammern ([ und ]) sind optional. In der folgenden Tabelle wird jedes Element beschrieben.

Element Beschreibung
$ Ein kulturspezifisches Währungssymbol. Seine Position in der Zeichenfolge wird durch die CurrencyNegativePattern Eigenschaften und CurrencyPositivePattern des Objekts definiert, das NumberFormatInfo von der GetFormat -Methode des provider Parameters zurückgegeben wird. Das Währungssymbol kann in s angezeigt werden, wenn style das NumberStyles.AllowCurrencySymbol Flag enthält.
ws Optionaler Leerraum. Leerzeichen können am Anfang von s angezeigt werden, wenn style das NumberStyles.AllowLeadingWhite Flag enthalten ist, und es kann am Ende von s angezeigt werden, wenn style das NumberStyles.AllowTrailingWhite Flag enthält.
sign Ein optionales Zeichen. Das Zeichen kann am Anfang von s angezeigt werden, wenn style das NumberStyles.AllowLeadingSign Flag enthält, und es kann am Ende von s angezeigt werden, wenn style das NumberStyles.AllowTrailingSign Flag enthält. Klammern können in s verwendet werden, um einen negativen Wert anzugeben, wenn style das NumberStyles.AllowParentheses Flag enthalten ist.
Zahlen Eine Sequenz von Ziffern im Bereich von 0 bis 9.
, Ein kulturspezifisches Tausendertrennzeichen. Das Tausendertrennzeichen der Kultur, die durch definiert ist provider , kann in s angezeigt werden, wenn style das NumberStyles.AllowThousands Flag enthält.
. Ein kulturspezifisches Dezimaltrennzeichen. Das Dezimaltrennzeichen der Kultur, die von provider definiert ist, kann in s angezeigt werden, wenn style das NumberStyles.AllowDecimalPoint Flag enthalten ist.
Bruchstellen Eine Sequenz von Ziffern im Bereich von 0 bis 9. Bruchstellen können nur in s angezeigt werden, wenn style das NumberStyles.AllowDecimalPoint Flag enthalten ist.
e Das Zeichen "e" oder "E", das angibt, dass der Wert in exponentieller Notation dargestellt wird. Der s Parameter kann eine Zahl in exponentieller Notation darstellen, wenn style das NumberStyles.AllowExponent Flag enthalten ist.

Hinweis

Alle endenden NUL-Zeichen (U+0000) in s werden vom Analysevorgang ignoriert, unabhängig vom Wert des style Arguments.

Eine Zeichenfolge nur mit Ziffern (die der None Formatvorlage entspricht) analysiert immer erfolgreich, wenn sie sich im Bereich des Decimal Typs befindet. Die verbleibenden NumberStyles Member steuern Elemente, die möglicherweise in der Eingabezeichenfolge vorhanden sein müssen, aber nicht erforderlich sind. Die folgende Tabelle gibt an, wie sich einzelne NumberStyles Member auf die Elemente auswirken, die in svorhanden sein können.

NumberStyles-Wert Zulässige Elemente in s zusätzlich zu Ziffern
None Nur das Digits-Element .
AllowDecimalPoint Die Elemente . und Bruchstellen .
AllowExponent Der s Parameter kann auch exponentielle Notation verwenden. Dieses Flag unterstützt Werte in den FormularziffernE-Ziffern; Zusätzliche Flags sind erforderlich, um Zeichenfolgen erfolgreich mit Elementen wie positiven oder negativen Zeichen und Dezimalzeichen zu analysieren.
AllowLeadingWhite Das ws-Element am Anfang von s.
AllowTrailingWhite Das ws-Element am Ende von s.
AllowLeadingSign Das Zeichenelement am Anfang von s.
AllowTrailingSign Das Zeichenelement am Ende von s.
AllowParentheses Das Zeichenelement in Form von Klammern, die den numerischen Wert einschließen.
AllowThousands Das -Element.
AllowCurrencySymbol Das $-Element.
Currency Alle. Der s Parameter kann keine hexadezimale Zahl oder eine Zahl in exponentieller Notation darstellen.
Float Das ws-Element am Anfang oder Ende von s, signieren am Anfang von sund das Symbol . Der s Parameter kann auch exponentielle Notation verwenden.
Number Die wsElemente , sign, und .
Any Alle Stile, außer s können keine Hexadezimalzahl darstellen.

Der provider Parameter ist eine IFormatProvider Implementierung, z. B. ein - oder CultureInfo -NumberFormatInfoObjekt. Der provider Parameter stellt kulturspezifische Informationen bereit, die bei der Analyse verwendet werden. Wenn provider gleich null ist, wird die aktuelle Threadkultur verwendet.

Ein Decimal -Objekt hat eine Genauigkeit von 29 Ziffern. Wenn s eine Zahl darstellt, die mehr als 29 Ziffern hat, aber einen Teilbruch aufweist und innerhalb des Bereichs von MaxValue und MinValueliegt, wird die Zahl durch Rundung auf 29 Ziffern gerundet, nicht abgeschnitten.

Wenn im s Parameter während eines Analysevorgangs ein Trennzeichen auftritt und die entsprechenden Währungs- oder Zahlendezimal- und Gruppentrennzeichen identisch sind, wird beim Analysevorgang davon ausgegangen, dass das Trennzeichen ein Dezimaltrennzeichen und kein Gruppentrennzeichen ist. Weitere Informationen zu Trennzeichen finden Sie unter CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatorund NumberGroupSeparator.

Weitere Informationen

Gilt für: