Decimal.Parse Metoda

Definicja

Konwertuje reprezentację ciągu liczby na równoważną Decimal.

Przeciążenia

Parse(String)

Konwertuje reprezentację ciągu liczby na równoważną Decimal.

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Analizuje zakres znaków UTF-8 w wartość.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Analizuje zakres znaków w wartości.

Parse(String, NumberStyles)

Konwertuje reprezentację ciągu liczby w określonym stylu na równoważną Decimal.

Parse(String, IFormatProvider)

Konwertuje reprezentację ciągu liczby na równoważną Decimal przy użyciu określonych informacji o formacie specyficznym dla kultury.

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Analizuje zakres znaków UTF-8 w wartość.

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Konwertuje reprezentację zakresu liczby na jej Decimal odpowiednik przy użyciu określonego stylu i formatu specyficznego dla kultury.

Parse(String, NumberStyles, IFormatProvider)

Konwertuje reprezentację ciągu liczby na równoważną Decimal przy użyciu określonego stylu i formatu specyficznego dla kultury.

Parse(String)

Źródło:
Decimal.cs
Źródło:
Decimal.cs
Źródło:
Decimal.cs

Konwertuje reprezentację ciągu liczby na równoważną Decimal.

C#
public static decimal Parse (string s);

Parametry

s
String

Reprezentacja ciągu liczby do przekonwertowania.

Zwraca

Odpowiednik liczby zawartej w s.

Wyjątki

s jest null.

s nie jest w poprawnym formacie.

s reprezentuje liczbę mniejszą niż decimal.MinValue lub większą niż Decimal.MaxValue.

Przykłady

Poniższy przykład kodu używa metody Parse(String) do analizowania reprezentacji ciągów Decimal wartości.

C#
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'.

Uwagi

Parametr s zawiera liczbę formularzy:

[ws] [podpis] [cyfry,]cyfry[.fractional-digits][ws]

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W poniższej tabeli opisano każdy element.

Pierwiastek Opis
ws Opcjonalne białe znaki.
podpisywania Opcjonalny znak.
cyfry Sekwencja cyfr od 0 do 9.
, Symbol separatora tysięcy specyficzny dla kultury.
. Symbol separatora dziesiętnego specyficznego dla kultury.
cyfry ułamkowe Sekwencja cyfr od 0 do 9.

s parametrów jest interpretowany przy użyciu stylu NumberStyles.Number. Oznacza to, że odstępy i tysiące separatorów są dozwolone, ale symbole waluty nie są. Aby jawnie zdefiniować elementy (takie jak symbole waluty, separatory tysięcy i biały znak), które mogą być obecne w s, użyj metody Decimal.Parse(String, NumberStyles) lub Decimal.Parse(String, NumberStyles, IFormatProvider).

Parametr s jest analizowany przy użyciu informacji formatowania w NumberFormatInfo zainicjowanych dla bieżącej kultury systemu. Aby uzyskać więcej informacji, zobacz CurrentInfo. Aby przeanalizować ciąg przy użyciu informacji o formatowaniu innej kultury, użyj metody Decimal.Parse(String, IFormatProvider) lub Decimal.Parse(String, NumberStyles, IFormatProvider).

W razie potrzeby wartość s jest zaokrąglona przy użyciu zaokrąglania do najbliższego.

Decimal ma 29 cyfr dokładności. Jeśli s reprezentuje liczbę, która ma więcej niż 29 cyfr, ale ma część ułamkową i znajduje się w zakresie MaxValue i MinValue, liczba jest zaokrąglona, nie obcięta, do 29 cyfr przy użyciu zaokrąglania do najbliższej.

Jeśli podczas operacji analizy separator napotkany jest w parametrze s, a odpowiednia waluta lub separatory dziesiętne i separatory grup są takie same, operacja analizy zakłada, że separator jest separatorem dziesiętnym, a nie separatorem grupy. Aby uzyskać więcej informacji na temat separatorów, zobacz CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatori NumberGroupSeparator.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Źródło:
Decimal.cs
Źródło:
Decimal.cs

Analizuje zakres znaków UTF-8 w wartość.

C#
public static decimal Parse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider);

Parametry

utf8Text
ReadOnlySpan<Byte>

Zakres znaków UTF-8 do przeanalizowania.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat utf8Text.

Zwraca

Wynik analizowania utf8Text.

Implementuje

Dotyczy

.NET 9 i .NET 8
Produkt Wersje
.NET 8, 9

Parse(ReadOnlySpan<Char>, IFormatProvider)

Źródło:
Decimal.cs
Źródło:
Decimal.cs
Źródło:
Decimal.cs

Analizuje zakres znaków w wartości.

C#
public static decimal Parse (ReadOnlySpan<char> s, IFormatProvider? provider);

Parametry

s
ReadOnlySpan<Char>

Zakres znaków do przeanalizowania.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat s.

Zwraca

Wynik analizowania s.

Implementuje

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET 7, 8, 9

Parse(String, NumberStyles)

Źródło:
Decimal.cs
Źródło:
Decimal.cs
Źródło:
Decimal.cs

Konwertuje reprezentację ciągu liczby w określonym stylu na równoważną Decimal.

C#
public static decimal Parse (string s, System.Globalization.NumberStyles style);

Parametry

s
String

Reprezentacja ciągu liczby do przekonwertowania.

style
NumberStyles

Bitowa kombinacja wartości NumberStyles wskazująca elementy stylu, które mogą być obecne w s. Typową wartością do określenia jest Number.

Zwraca

Liczba Decimal równoważna liczbie zawartej w s określonej przez style.

Wyjątki

s jest null.

style nie jest wartością NumberStyles.

-lub-

style jest wartością AllowHexSpecifier.

s nie jest w poprawnym formacie.

s reprezentuje liczbę mniejszą niż decimal.MinValue lub większą niż decimal.MaxValue

Przykłady

Poniższy przykład kodu używa metody Parse(String, NumberStyles) do analizowania reprezentacji ciągów Decimal wartości przy użyciu kultury en-US.

C#
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.

Uwagi

Parametr style definiuje elementy stylu (takie jak separatory tysięcy, białe znaki i symbole waluty), które są dozwolone w parametrze s, aby operacja analizy powiodła się. Musi to być kombinacja flag bitowych z wyliczenia NumberStyles. Następujące NumberStyles członków nie są obsługiwane:

W zależności od wartości styleparametr s może zawierać następujące elementy:

[ws] [$] [podpis] [cyfry,]cyfry[.fractional-digits][e[sign]digits][ws]

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W poniższej tabeli opisano każdy element.

Pierwiastek Opis
ws Opcjonalne białe znaki. Białe znaki mogą pojawić się na początku s, jeśli style zawiera flagę NumberStyles.AllowLeadingWhite i może pojawić się na końcu s, jeśli style zawiera flagę NumberStyles.AllowTrailingWhite.
$ Symbol waluty specyficznej dla kultury. Jego pozycja w ciągu jest definiowana przez właściwości NumberFormatInfo.CurrencyNegativePattern i NumberFormatInfo.CurrencyPositivePattern bieżącej kultury. Symbol waluty bieżącej kultury może pojawić się w s, jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol.
podpisywania Opcjonalny znak. Znak może pojawić się na początku s, jeśli style zawiera flagę NumberStyles.AllowLeadingSign i może pojawić się na końcu s, jeśli style zawiera flagę NumberStyles.AllowTrailingSign. Nawiasy mogą być używane w s, aby wskazać wartość ujemną, jeśli style zawiera flagę NumberStyles.AllowParentheses.
cyfry Sekwencja cyfr od 0 do 9.
, Symbol separatora tysięcy specyficzny dla kultury. Separator tysięcy bieżącej kultury może pojawić się w s, jeśli style zawiera flagę NumberStyles.AllowThousands.
. Symbol separatora dziesiętnego specyficznego dla kultury. Symbol punktu dziesiętnego bieżącej kultury może pojawić się w s, jeśli style zawiera flagę NumberStyles.AllowDecimalPoint.
cyfry ułamkowe Sekwencja cyfr od 0 do 9. Cyfry ułamkowe mogą być wyświetlane w s tylko wtedy, gdy style zawiera flagę NumberStyles.AllowDecimalPoint.
e Znak "e" lub "E", który wskazuje, że wartość jest reprezentowana w notacji wykładniczej. Parametr s może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent.

Uwaga

Wszystkie znaki NUL (U+0000) w s są ignorowane przez operację analizowania, niezależnie od wartości argumentu style.

Ciąg zawierający tylko cyfry (który odpowiada stylowi None) zawsze analizuje się pomyślnie, jeśli znajduje się w zakresie typu Decimal. Pozostałe elementy członkowskie NumberStyles, które mogą być, ale nie muszą być obecne w ciągu wejściowym. W poniższej tabeli przedstawiono, jak poszczególne elementy członkowskie NumberStyles wpływają na elementy, które mogą znajdować się w s.

Wartość NumberStyles Elementy dozwolone w s oprócz cyfr
None Cyfry tylko element.
AllowDecimalPoint . i cyfry ułamkowe elementów.
AllowExponent Parametr s może również używać notacji wykładniczej. Ta flaga obsługuje wartości w postaci cyfrEcyfr; dodatkowe flagi są potrzebne do pomyślnego analizowania ciągów z elementami, takimi jak znaki dodatnie lub ujemne i symbole punktów dziesiętnych.
AllowLeadingWhite Element ws na początku s.
AllowTrailingWhite Element ws na końcu s.
AllowLeadingSign Element podpisywania na początku .
AllowTrailingSign Element na końcu s.
AllowParentheses Znak element w postaci nawiasów otaczających wartość liczbową.
AllowThousands Element ,.
AllowCurrencySymbol Element $.
Currency Cały. Parametr s nie może reprezentować liczby szesnastkowej lub liczby w notacji wykładniczej.
Float Element ws na początku lub na końcu sznak na początku si symbol .. Parametr s może również używać notacji wykładniczej.
Number Elementy ws, sign, , i ..
Any Wszystkie style, z wyjątkiem s nie mogą reprezentować liczby szesnastkowej.

Parametr s jest analizowany przy użyciu informacji formatowania w obiekcie NumberFormatInfo zainicjowanym dla bieżącej kultury systemu. Aby uzyskać więcej informacji, zobacz CurrentInfo.

Decimal ma 29 cyfr dokładności. Jeśli s reprezentuje liczbę, która ma więcej niż 29 cyfr, ale ma część ułamkową i znajduje się w zakresie MaxValue i MinValue, liczba jest zaokrąglona, nie obcięta, do 29 cyfr przy użyciu zaokrąglania do najbliższej.

Jeśli separator napotkany w parametrze s podczas operacji analizowania, styles zawiera wartości NumberStyles.AllowThousands i NumberStyles.AllowDecimalPoint, a odpowiednie wartości waluty lub liczby dziesiętnej i separatory grup są takie same, operacja analizy zakłada, że separator jest separatorem dziesiętnym, a nie separatorem grupy. Aby uzyskać więcej informacji na temat separatorów, zobacz CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatori NumberGroupSeparator.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Parse(String, IFormatProvider)

Źródło:
Decimal.cs
Źródło:
Decimal.cs
Źródło:
Decimal.cs

Konwertuje reprezentację ciągu liczby na równoważną Decimal przy użyciu określonych informacji o formacie specyficznym dla kultury.

C#
public static decimal Parse (string s, IFormatProvider provider);
C#
public static decimal Parse (string s, IFormatProvider? provider);

Parametry

s
String

Reprezentacja ciągu liczby do przekonwertowania.

provider
IFormatProvider

IFormatProvider dostarczająca informacje dotyczące analizy specyficznej dla kultury s.

Zwraca

Liczba Decimal równoważna liczbie zawartej w s określonej przez provider.

Implementuje

Wyjątki

s jest null.

s nie jest poprawnym formatem.

s reprezentuje liczbę mniejszą niż decimal.MinValue lub większą niż Decimal.MaxValue.

Przykłady

Poniższy przykład to procedura obsługi zdarzeń kliknięcia przycisku formularza internetowego. Używa tablicy zwróconej przez właściwość HttpRequest.UserLanguages, aby określić ustawienia regionalne użytkownika. Następnie tworzy wystąpienie obiektu CultureInfo, który odpowiada tym ustawień regionalnych. Obiekt NumberFormatInfo, który należy do tego obiektu CultureInfo, jest następnie przekazywany do metody Parse(String, IFormatProvider) w celu przekonwertowania danych wejściowych użytkownika na wartość Decimal.

C#
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();
}

Uwagi

To przeciążenie metody Parse(String, IFormatProvider) jest często używane do konwertowania tekstu, który można sformatować na różne sposoby na wartość Decimal. Na przykład można go użyć do przekonwertowania tekstu wprowadzonego przez użytkownika na pole tekstowe HTML na wartość liczbową.

Parametr s zawiera liczbę formularzy:

[ws] [podpis] [cyfry,]cyfry[.fractional-digits][ws]

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W poniższej tabeli opisano każdy element.

Pierwiastek Opis
ws Opcjonalne białe znaki.
podpisywania Opcjonalny znak.
cyfry Sekwencja cyfr od 0 do 9.
, Symbol separatora tysięcy specyficzny dla kultury.
. Symbol separatora dziesiętnego specyficznego dla kultury.
cyfry ułamkowe Sekwencja cyfr od 0 do 9.

Parametr s jest interpretowany przy użyciu stylu NumberStyles.Number. Oznacza to, że odstępy i tysiące separatorów są dozwolone, ale symbole waluty nie są. Aby jawnie zdefiniować elementy (takie jak symbole waluty, separatory tysięcy i biały znak), które mogą być obecne w s, użyj metody Decimal.Parse(String, NumberStyles, IFormatProvider).

Parametr provider jest implementacją IFormatProvider, taką jak obiekt NumberFormatInfo lub CultureInfo. Parametr provider dostarcza informacje specyficzne dla kultury używane w analizowaniu. Jeśli provider jest null, używana jest bieżąca kultura wątku.

Obiekt Decimal ma 29 cyfr dokładności. Jeśli s reprezentuje liczbę, która ma więcej niż 29 cyfr, ale ma część ułamkową i znajduje się w zakresie MaxValue i MinValue, liczba jest zaokrąglona, nie obcięta, do 29 cyfr przy użyciu zaokrąglania do najbliższej.

Jeśli separator napotkany w parametrze s podczas operacji analizy, a odpowiednia waluta lub separatory liczbowe i separatory grup są takie same, operacja analizy zakłada, że separator jest separatorem dziesiętnym, a nie separatorem grup. Aby uzyskać więcej informacji na temat separatorów, zobacz CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatori NumberGroupSeparator.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Źródło:
Decimal.cs
Źródło:
Decimal.cs

Analizuje zakres znaków UTF-8 w wartość.

C#
public static decimal Parse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Number, IFormatProvider? provider = default);

Parametry

utf8Text
ReadOnlySpan<Byte>

Zakres znaków UTF-8 do przeanalizowania.

style
NumberStyles

Bitowa kombinacja stylów liczbowych, które mogą być obecne w utf8Text.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat utf8Text.

Zwraca

Wynik analizowania utf8Text.

Implementuje

Dotyczy

.NET 9 i .NET 8
Produkt Wersje
.NET 8, 9

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Źródło:
Decimal.cs
Źródło:
Decimal.cs
Źródło:
Decimal.cs

Konwertuje reprezentację zakresu liczby na jej Decimal odpowiednik przy użyciu określonego stylu i formatu specyficznego dla kultury.

C#
public static decimal Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Number, IFormatProvider? provider = default);
C#
public static decimal Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Number, IFormatProvider provider = default);

Parametry

s
ReadOnlySpan<Char>

Zakres zawierający znaki reprezentujące liczbę do konwersji.

style
NumberStyles

Bitowa kombinacja wartości NumberStyles wskazująca elementy stylu, które mogą być obecne w s. Typową wartością do określenia jest Number.

provider
IFormatProvider

Obiekt IFormatProvider, który dostarcza informacje specyficzne dla kultury dotyczące formatu s.

Zwraca

Liczba Decimal równoważna liczbie zawartej w s określonej przez style i provider.

Implementuje

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

Parse(String, NumberStyles, IFormatProvider)

Źródło:
Decimal.cs
Źródło:
Decimal.cs
Źródło:
Decimal.cs

Konwertuje reprezentację ciągu liczby na równoważną Decimal przy użyciu określonego stylu i formatu specyficznego dla kultury.

C#
public static decimal Parse (string s, System.Globalization.NumberStyles style, IFormatProvider provider);
C#
public static decimal Parse (string s, System.Globalization.NumberStyles style, IFormatProvider? provider);

Parametry

s
String

Reprezentacja ciągu liczby do przekonwertowania.

style
NumberStyles

Bitowa kombinacja wartości NumberStyles wskazująca elementy stylu, które mogą być obecne w s. Typową wartością do określenia jest Number.

provider
IFormatProvider

Obiekt IFormatProvider, który dostarcza informacje specyficzne dla kultury dotyczące formatu s.

Zwraca

Liczba Decimal równoważna liczbie zawartej w s określonej przez style i provider.

Implementuje

Wyjątki

s nie jest w poprawnym formacie.

s reprezentuje liczbę mniejszą niż decimal.MinValue lub większą niż Decimal.MaxValue.

s jest null.

style nie jest wartością NumberStyles.

-lub-

style jest wartością AllowHexSpecifier.

Przykłady

W poniższym przykładzie użyto różnych parametrów style i provider, aby przeanalizować reprezentacje ciągów Decimal wartości.

C#
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.

Uwagi

Parametr style definiuje dozwolony format parametru s, aby operacja analizy zakończyła się pomyślnie. Musi to być kombinacja flag bitowych z wyliczenia NumberStyles. Następujące NumberStyles członków nie są obsługiwane:

W zależności od wartości styleparametr s może zawierać następujące elementy:

[ws] [$] [podpis] [cyfry,]cyfry[.fractional-digits][e[sign]digits][ws]

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W poniższej tabeli opisano każdy element.

Pierwiastek Opis
$ Symbol waluty specyficznej dla kultury. Jego pozycja w ciągu jest definiowana przez właściwości CurrencyNegativePattern i CurrencyPositivePattern obiektu NumberFormatInfo zwróconego przez metodę GetFormat parametru provider. Symbol waluty może pojawić się w s, jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol.
ws Opcjonalne białe znaki. Białe znaki mogą pojawić się na początku s, jeśli style zawiera flagę NumberStyles.AllowLeadingWhite i może pojawić się na końcu s, jeśli style zawiera flagę NumberStyles.AllowTrailingWhite.
podpisywania Opcjonalny znak. Znak może pojawić się na początku s, jeśli style zawiera flagę NumberStyles.AllowLeadingSign i może pojawić się na końcu s, jeśli style zawiera flagę NumberStyles.AllowTrailingSign. Nawiasy mogą być używane w s, aby wskazać wartość ujemną, jeśli style zawiera flagę NumberStyles.AllowParentheses.
cyfry Sekwencja cyfr od 0 do 9.
, Symbol separatora tysięcy specyficzny dla kultury. Separator tysięcy kultury zdefiniowanej przez provider może pojawić się w s, jeśli style zawiera flagę NumberStyles.AllowThousands.
. Symbol separatora dziesiętnego specyficznego dla kultury. Symbol punktu dziesiętnego kultury zdefiniowanej przez provider może pojawić się w s, jeśli style zawiera flagę NumberStyles.AllowDecimalPoint.
cyfry ułamkowe Sekwencja cyfr od 0 do 9. Cyfry ułamkowe mogą być wyświetlane w s tylko wtedy, gdy style zawiera flagę NumberStyles.AllowDecimalPoint.
e Znak "e" lub "E", który wskazuje, że wartość jest reprezentowana w notacji wykładniczej. Parametr s może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent.

Uwaga

Wszystkie znaki NUL (U+0000) w s są ignorowane przez operację analizowania, niezależnie od wartości argumentu style.

Ciąg zawierający tylko cyfry (który odpowiada stylowi None) zawsze analizuje się pomyślnie, jeśli znajduje się w zakresie typu Decimal. Pozostałe elementy członkowskie NumberStyles, które mogą być, ale nie muszą być obecne w ciągu wejściowym. W poniższej tabeli przedstawiono, jak poszczególne elementy członkowskie NumberStyles wpływają na elementy, które mogą znajdować się w s.

Wartość NumberStyles Elementy dozwolone w s oprócz cyfr
None Cyfry tylko element.
AllowDecimalPoint . i cyfry ułamkowe elementów.
AllowExponent Parametr s może również używać notacji wykładniczej. Ta flaga obsługuje wartości w postaci cyfrEcyfr; dodatkowe flagi są potrzebne do pomyślnego analizowania ciągów z elementami, takimi jak znaki dodatnie lub ujemne i symbole punktów dziesiętnych.
AllowLeadingWhite Element ws na początku s.
AllowTrailingWhite Element ws na końcu s.
AllowLeadingSign Element podpisywania na początku .
AllowTrailingSign Element na końcu s.
AllowParentheses Znak element w postaci nawiasów otaczających wartość liczbową.
AllowThousands Element ,.
AllowCurrencySymbol Element $.
Currency Cały. Parametr s nie może reprezentować liczby szesnastkowej lub liczby w notacji wykładniczej.
Float Element ws na początku lub na końcu sznak na początku si . symbol. Parametr s może również używać notacji wykładniczej.
Number ws, sign, ,i . elementów.
Any Wszystkie style, z wyjątkiem s nie mogą reprezentować liczby szesnastkowej.

Parametr provider jest implementacją IFormatProvider, taką jak obiekt NumberFormatInfo lub CultureInfo. Parametr provider dostarcza informacje specyficzne dla kultury używane w analizowaniu. Jeśli provider jest null, używana jest bieżąca kultura wątku.

Obiekt Decimal ma 29 cyfr dokładności. Jeśli s reprezentuje liczbę, która ma więcej niż 29 cyfr, ale ma część ułamkową i znajduje się w zakresie MaxValue i MinValue, liczba jest zaokrąglona, nie obcięta, do 29 cyfr przy użyciu zaokrąglania do najbliższej.

Jeśli separator napotkany w parametrze s podczas operacji analizy, a odpowiednia waluta lub separatory liczbowe i separatory grup są takie same, operacja analizy zakłada, że separator jest separatorem dziesiętnym, a nie separatorem grup. Aby uzyskać więcej informacji na temat separatorów, zobacz CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatori NumberGroupSeparator.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0