Freigeben über


Decimal.Parse Methode

Definition

Konvertiert die Zeichenfolgendarstellung einer Zahl in die Decimal entsprechende Zahl.

Überlädt

Name Beschreibung
Parse(String)

Konvertiert die Zeichenfolgendarstellung einer Zahl in die Decimal entsprechende Zahl.

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 einer angegebenen Formatvorlage in das Decimal entsprechende Format.

Parse(String, IFormatProvider)

Wandelt die Zeichenfolgendarstellung einer Zahl mithilfe der angegebenen kulturspezifischen Formatinformationen in das Decimal entsprechende Format um.

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

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

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Wandelt die Spandarstellung einer Zahl mithilfe der angegebenen Formatvorlage und des kulturspezifischen Formats in ihr Decimal Äquivalent um.

Parse(String, NumberStyles, IFormatProvider)

Konvertiert die Zeichenfolgendarstellung einer Zahl mit dem angegebenen Format und dem kulturspezifischen Format in das Decimal entsprechende Format.

Parse(String)

Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs

Konvertiert die Zeichenfolgendarstellung einer Zahl in die Decimal entsprechende Zahl.

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

Das Äquivalent zu der in s.

Ausnahmen

s ist null.

s ist nicht im richtigen Format vorhanden.

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

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

Der Parameter s enthält eine Zahl des Formulars:

[ws] [Zeichen] [Ziffern;]Ziffern[.bruchstellen][ws]

Elemente in eckigen Klammern ([ und ]) sind optional. In der folgenden Tabelle werden die einzelnen Elemente beschrieben.

Element Beschreibung
Ws Optionaler Leerraum.
Zeichen Ein optionales Zeichen.
Ziffern Eine Sequenz von Ziffern zwischen 0 und 9.
, Ein kulturspezifisches Tausendertrennzeichen.
. Ein kulturspezifisches Dezimalkommasymbol.
Bruchzahlen Eine Sequenz von Ziffern zwischen 0 und 9.

Der Parameter s wird mithilfe der NumberStyles.Number Formatvorlage interpretiert. Dies bedeutet, dass Leerzeichen und Tausendertrennzeichen zulässig sind, währungssymbole jedoch nicht. Verwenden Sie zum expliziten Definieren der Elemente (z. B. Währungssymbole, Tausendertrennzeichen und Leerzeichen), die vorhanden ssein können, entweder die Decimal.Parse(String, NumberStyles) Methode oder die Decimal.Parse(String, NumberStyles, IFormatProvider) Methode.

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

Bei Bedarf wird der Wert s gerundet, indem er auf das nächste gerundet wird.

A Decimal hat 29 Ziffern Genauigkeit. Wenn s eine Zahl, die mehr als 29 Ziffern enthält, aber einen Bruchteil aufweist und sich innerhalb des MaxValue Bereichs und MinValuebefindet, wird die Zahl gerundet, nicht abgeschnitten, auf 29 Ziffern mit Rundung am nächsten.

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

Weitere Informationen

Gilt für:

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs

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 von UTF-8 Zeichen, die analysiert werden sollen.

provider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu utf8Text.

Gibt zurück

Das Ergebnis der Analyse utf8Text.

Implementiert

Gilt für:

Parse(ReadOnlySpan<Char>, IFormatProvider)

Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs

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.

Gibt zurück

Das Ergebnis der Analyse s.

Implementiert

Gilt für:

Parse(String, NumberStyles)

Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs

Konvertiert die Zeichenfolgendarstellung einer Zahl in einer angegebenen Formatvorlage in das Decimal entsprechende Format.

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 Formatvorlagenelemente angibt, die vorhanden ssein können. Ein typischer Wert, der angegeben werden soll, ist Number.

Gibt zurück

Die Decimal Zahl, die der in der styleangegebenen s Zahl entspricht.

Ausnahmen

s ist null.

style ist kein NumberStyles Wert.

-oder-

style ist der AllowHexSpecifier Wert.

s ist nicht im richtigen Format vorhanden.

sstellt eine Zahl kleiner als Decimal.MinValue oder größer als Decimal.MaxValue dar.

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 Formatvorlagenelemente (z. B. Tausendertrennzeichen, Leerzeichen und Währungssymbole), die im s Parameter zulässig sind, damit der Analysevorgang erfolgreich ausgeführt werden kann. Es muss eine Kombination aus Bitkennzeichnungen aus der NumberStyles Enumeration sein. Die folgenden NumberStyles Member werden nicht unterstützt:

Je nach Wert kann styleder s Parameter die folgenden Elemente enthalten:

[ws] [$] [Zeichen] [Ziffern;]Ziffern[.bruchstellen][e[Vorzeichen][Zeichen][ws]

Elemente in eckigen Klammern ([ und ]) sind optional. In der folgenden Tabelle werden die einzelnen Elemente beschrieben.

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

Anmerkung

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

Eine Zeichenfolge mit Ziffern (die der None Formatvorlage entspricht) analysiert immer erfolgreich, wenn sie sich im Bereich des Decimal Typs befindet. Die übrigen NumberStyles Elemente steuern Elemente, die möglicherweise vorhanden, aber nicht in der Eingabezeichenfolge vorhanden sein müssen. In der folgenden Tabelle wird angegeben, wie sich einzelne NumberStyles Member auf die Elemente auswirken, die möglicherweise svorhanden sind.

NumberStyles-Wert Elemente, die zusätzlich zu Ziffern in s zulässig sind
None Nur das Ziffernelement .
AllowDecimalPoint Die Elemente " . " und "Bruchzahlen" .
AllowExponent Der s Parameter kann auch exponentielle Notation verwenden. Dieses Kennzeichen unterstützt Werte in denFormularziffern E-Ziffern; Zusätzliche Flags werden benötigt, um Zeichenfolgen erfolgreich mit Elementen wie positiven oder negativen Zeichen und Dezimalkommasymbolen 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 Schreibweise darstellen.
Float Das ws-Element am Anfang oder Ende von s, Zeichen am Anfang von s, und das . Symbol. Der s Parameter kann auch exponentielle Notation verwenden.
Number Die ws, sign, , und . Elemente.
Any Alle Formatvorlagen, mit Ausnahme s 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 29 Ziffern Genauigkeit. Wenn s eine Zahl, die mehr als 29 Ziffern enthält, aber einen Bruchteil aufweist und sich innerhalb des MaxValue Bereichs und MinValuebefindet, wird die Zahl gerundet, nicht abgeschnitten, auf 29 Ziffern mit Rundung am nächsten.

Wenn während eines Analysevorgangs ein Trennzeichen im s Parameter auftritt, styles die NumberStyles.AllowThousands werte und NumberStyles.AllowDecimalPoint die anwendbaren Währungs- oder Zahlendezimal- und Gruppentrennzeichen identisch sind, wird bei dem Analysevorgang davon ausgegangen, dass es sich bei dem Trennzeichen um ein Dezimaltrennzeichen anstelle eines Gruppentrennzeichens handelt. Weitere Informationen zu Trennzeichen finden Sie unter CurrencyDecimalSeparator, , NumberDecimalSeparator, CurrencyGroupSeparatorund NumberGroupSeparator.

Weitere Informationen

Gilt für:

Parse(String, IFormatProvider)

Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs

Wandelt die Zeichenfolgendarstellung einer Zahl mithilfe der angegebenen kulturspezifischen Formatinformationen in das Decimal entsprechende Format um.

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

Eine IFormatProvider , die kulturspezifische Analyseinformationen zu s.

Gibt zurück

Die Decimal Zahl, die der in der providerangegebenen s Zahl entspricht.

Implementiert

Ausnahmen

s ist null.

s ist nicht das richtige Format.

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

Beispiele

Das folgende Beispiel ist der Button Click-Ereignishandler eines Webformulars. Es verwendet das von der HttpRequest.UserLanguages Eigenschaft zurückgegebene Array, um das Gebietsschema des Benutzers zu bestimmen. Anschließend instanziiert es 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 unterschiedliche Weise in einen Decimal Wert formatiert werden kann. Beispielsweise kann er 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 Zahl des Formulars:

[ws] [Zeichen] [Ziffern;]Ziffern[.bruchstellen][ws]

Elemente in eckigen Klammern ([ und ]) sind optional. In der folgenden Tabelle werden die einzelnen Elemente beschrieben.

Element Beschreibung
Ws Optionaler Leerraum.
Zeichen Ein optionales Zeichen.
Ziffern Eine Sequenz von Ziffern zwischen 0 und 9.
, Ein kulturspezifisches Tausendertrennzeichen.
. Ein kulturspezifisches Dezimalkommasymbol.
Bruchzahlen Eine Sequenz von Ziffern zwischen 0 und 9.

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

Der provider Parameter ist eine IFormatProvider Implementierung, z. B. ein Objekt oder CultureInfo ein NumberFormatInfo Objekt. Der provider Parameter liefert kulturspezifische Informationen, die bei der Analyse verwendet werden. Ist provider dies nullder Grund, wird die aktuelle Threadkultur verwendet.

Ein Decimal Objekt weist 29 Ziffern Genauigkeit auf. Wenn s eine Zahl, die mehr als 29 Ziffern enthält, aber einen Bruchteil aufweist und sich innerhalb des MaxValue Bereichs und MinValuebefindet, wird die Zahl gerundet, nicht abgeschnitten, auf 29 Ziffern mit Rundung am nächsten.

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

Weitere Informationen

Gilt für:

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs

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 von UTF-8 Zeichen, die analysiert werden sollen.

style
NumberStyles

Eine bitweise Kombination aus Zahlenformatvorlagen, die vorhanden utf8Textsein können.

provider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu utf8Text.

Gibt zurück

Das Ergebnis der Analyse utf8Text.

Implementiert

Gilt für:

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs

Wandelt die Spandarstellung einer Zahl mithilfe der angegebenen Formatvorlage und des kulturspezifischen Formats in ihr Decimal Äquivalent um.

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 Formatvorlagenelemente angibt, die vorhanden ssein können. Ein typischer Wert, der angegeben werden soll, ist Number.

provider
IFormatProvider

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

Gibt zurück

Die Decimal Zahl, die der in der style angegebenen s Zahl entspricht, und provider.

Implementiert

Gilt für:

Parse(String, NumberStyles, IFormatProvider)

Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs

Konvertiert die Zeichenfolgendarstellung einer Zahl mit dem angegebenen Format und dem kulturspezifischen Format in das Decimal entsprechende Format.

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 Formatvorlagenelemente angibt, die vorhanden ssein können. Ein typischer Wert, der angegeben werden soll, ist Number.

provider
IFormatProvider

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

Gibt zurück

Die Decimal Zahl, die der in der style angegebenen s Zahl entspricht, und provider.

Implementiert

Ausnahmen

s ist nicht im richtigen Format vorhanden.

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

s ist null.

style ist kein NumberStyles Wert.

-oder-

style ist der AllowHexSpecifier Wert.

Beispiele

Im folgenden Beispiel wird eine Vielzahl von style und provider Parameter 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 ausgeführt werden kann. Es muss eine Kombination aus Bitkennzeichnungen aus der NumberStyles Enumeration sein. Die folgenden NumberStyles Member werden nicht unterstützt:

Je nach Wert kann styleder s Parameter die folgenden Elemente enthalten:

[ws] [$] [Zeichen] [Ziffern;]Ziffern[.bruchstellen][e[Vorzeichen][Zeichen][ws]

Elemente in eckigen Klammern ([ und ]) sind optional. In der folgenden Tabelle werden die einzelnen Elemente beschrieben.

Element Beschreibung
$ Ein kulturspezifisches Währungssymbol. Die Position in der Zeichenfolge wird durch die CurrencyNegativePattern eigenschaften CurrencyPositivePattern des NumberFormatInfo Objekts definiert, das von der GetFormat Methode des provider Parameters zurückgegeben wird. Das Währungssymbol kann angezeigt werden, wenn s das style Kennzeichen enthalten NumberStyles.AllowCurrencySymbol ist.
Ws Optionaler Leerraum. Leerzeichen können am Anfang angezeigt s werden, wenn style die NumberStyles.AllowLeadingWhite Kennzeichnung enthalten ist, und sie kann am Ende der s Kennzeichnung angezeigt werden, wenn style die NumberStyles.AllowTrailingWhite Kennzeichnung enthalten ist.
Zeichen Ein optionales Zeichen. Das Zeichen kann am Anfang des s Zeichens angezeigt werden, wenn style das NumberStyles.AllowLeadingSign Kennzeichen enthalten ist, und es kann am Ende s angezeigt werden, wenn style das NumberStyles.AllowTrailingSign Kennzeichen enthalten ist. Klammern können verwendet s werden, um einen negativen Wert anzugeben, wenn style das NumberStyles.AllowParentheses Flag enthalten ist.
Ziffern Eine Sequenz von Ziffern zwischen 0 und 9.
, Ein kulturspezifisches Tausendertrennzeichen. Das Tausendertrennzeichen der durch definierten provider Kultur kann angezeigt werden s , wenn style die NumberStyles.AllowThousands Kennzeichnung enthalten ist.
. Ein kulturspezifisches Dezimalkommasymbol. Das Dezimalkommasymbol der definierten provider Kultur kann angezeigt s werden, wenn style die NumberStyles.AllowDecimalPoint Kennzeichnung enthalten ist.
Bruchzahlen Eine Sequenz von Ziffern zwischen 0 und 9. Dezimalstellen können nur angezeigt werden s , wenn style die NumberStyles.AllowDecimalPoint Kennzeichnung enthalten ist.
e Das Zeichen "e" oder "E", das angibt, dass der Wert in exponentieller Schreibweise dargestellt wird. Der s Parameter kann eine Zahl in exponentieller Notation darstellen, wenn style das NumberStyles.AllowExponent Flag enthalten ist.

Anmerkung

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

Eine Zeichenfolge mit Ziffern (die der None Formatvorlage entspricht) analysiert immer erfolgreich, wenn sie sich im Bereich des Decimal Typs befindet. Die übrigen NumberStyles Elemente steuern Elemente, die möglicherweise vorhanden, aber nicht in der Eingabezeichenfolge vorhanden sein müssen. In der folgenden Tabelle wird angegeben, wie sich einzelne NumberStyles Member auf die Elemente auswirken, die möglicherweise svorhanden sind.

NumberStyles-Wert Elemente, die zusätzlich zu Ziffern in s zulässig sind
None Nur das Ziffernelement .
AllowDecimalPoint Die Elemente " . " und "Bruchzahlen" .
AllowExponent Der s Parameter kann auch exponentielle Notation verwenden. Dieses Kennzeichen unterstützt Werte in denFormularziffern E-Ziffern; Zusätzliche Flags werden benötigt, um Zeichenfolgen erfolgreich mit Elementen wie positiven oder negativen Zeichen und Dezimalkommasymbolen 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 Schreibweise darstellen.
Float Das ws-Element am Anfang oder Ende von s, Zeichen am Anfang von s, und das Symbol . Der s Parameter kann auch exponentielle Notation verwenden.
Number Die wsElemente , sign, , und.
Any Alle Formatvorlagen, mit Ausnahme s einer hexadezimalen Zahl.

Der provider Parameter ist eine IFormatProvider Implementierung, z. B. ein Objekt oder CultureInfo ein NumberFormatInfo Objekt. Der provider Parameter liefert kulturspezifische Informationen, die bei der Analyse verwendet werden. Ist provider dies nullder Grund, wird die aktuelle Threadkultur verwendet.

Ein Decimal Objekt weist 29 Ziffern Genauigkeit auf. Wenn s eine Zahl, die mehr als 29 Ziffern enthält, aber einen Bruchteil aufweist und sich innerhalb des MaxValue Bereichs und MinValuebefindet, wird die Zahl gerundet, nicht abgeschnitten, auf 29 Ziffern mit Rundung am nächsten.

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

Weitere Informationen

Gilt für: