Decimal.Parse Метод

Определение

Преобразует строковое представление числа в его эквивалент типа Decimal.

Перегрузки

Parse(String, NumberStyles, IFormatProvider)

Преобразует строковое представление числа в его эквивалент Decimal, используя заданный стиль и формат для языка и региональных параметров.

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Преобразует представление числа в виде диапазона в его эквивалент Decimal, используя заданный стиль и формат для языка и региональных параметров.

Parse(String, IFormatProvider)

Преобразует строковое представление числа в его эквивалент Decimal, используя заданные сведения о формате для языка и региональных параметров.

Parse(String, NumberStyles)

Преобразует строковое представление числа с указанным стилем в его эквивалент в формате Decimal.

Parse(String)

Преобразует строковое представление числа в его эквивалент типа Decimal.

Parse(String, NumberStyles, IFormatProvider)

Преобразует строковое представление числа в его эквивалент Decimal, используя заданный стиль и формат для языка и региональных параметров.

public:
 static System::Decimal Parse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider);
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

Параметры

s
String

Преобразовываемое строковое представление числа.

style
NumberStyles

Побитовое сочетание значений NumberStyles, обозначающих элементы стиля, которые могут быть представлены в параметре s. Обычно указывается значение Number.

provider
IFormatProvider

Объект IFormatProvider предоставляет сведения о формате параметра s для определенного языка и региональных параметров.

Возвращаемое значение

Decimal

Число типа Decimal, равное числу, содержащемуся в параметре s, который задается параметрами style и provider.

Исключения

s имеет неправильный формат.

Параметр s представляет число, которое меньше значения MinValue или больше значения MaxValue.

s имеет значение null.

style не является значением NumberStyles.

-или- style является значением AllowHexSpecifier.

Примеры

В следующем примере используются различные style provider Параметры и для анализа строковых представлений Decimal значений.

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

Комментарии

styleПараметр определяет допустимый формат s параметра для выполнения операции синтаксического анализа. Он должен представлять собой сочетание битовых флагов из NumberStyles перечисления. Следующие NumberStyles члены не поддерживаются:

В зависимости от значения style s параметр может включать следующие элементы:

Протокол [$] писать [цифры,] цифры [. дробные цифры] [e [знак] цифры] [ws]

Элементы в квадратных скобках ([и]) являются необязательными. Каждый из элементов описан в таблице ниже.

Элемент Описание
$ Символ валюты, зависящий от языка и региональных параметров. Его расположение в строке определяется CurrencyNegativePattern CurrencyPositivePattern свойствами и объекта, NumberFormatInfo возвращаемыми GetFormat методом provider параметра. Символ валюты может отображаться в s , если style включает NumberStyles.AllowCurrencySymbol флаг.
ws Необязательный пробел. Пробел может присутствовать в начале s style , если включает NumberStyles.AllowLeadingWhite флаг, и может находиться в конце, s Если style включает NumberStyles.AllowTrailingWhite флаг.
sign Необязательный знак. Знак может присутствовать в начале s style , если включает NumberStyles.AllowLeadingSign флаг, и может находиться в конце, s Если style включает NumberStyles.AllowTrailingSign флаг. Круглые скобки могут использоваться в s , чтобы указать отрицательное значение, если style включает NumberStyles.AllowParentheses флаг.
digits Последовательность цифр в диапазоне от 0 до 9.
, Символ разделителя тысяч, зависящий от языка и региональных параметров. Разделитель тысяч языка и региональных параметров, определяемый, provider может использоваться в, s Если style включает NumberStyles.AllowThousands флаг.
. Символ десятичной запятой, зависящий от языка и региональных параметров. Символ десятичной запятой, заданный параметром, provider может присутствовать в, s Если style включает NumberStyles.AllowDecimalPoint флаг.
Дробные разряды Последовательность цифр в диапазоне от 0 до 9. Дробные цифры могут использоваться только в том s случае style , если включает NumberStyles.AllowDecimalPoint флаг.
e Символ "e" или "E", указывающий, что значение представлено в экспоненциальной нотации. sПараметр может представлять число в экспоненциальной нотации style , если включает NumberStyles.AllowExponent флаг.

Примечание

Все завершающие символы NUL (U + 0000) в s игнорируются операцией синтаксического анализа, независимо от значения style аргумента.

Строка с цифрами (которая соответствует None стилю) всегда анализируется успешно, если она находится в диапазоне Decimal типа. Остальные элементы NumberStyles управляют элементами, которые могут быть, но не обязательно присутствовать во входной строке. В следующей таблице показано, как отдельные NumberStyles члены влияют на элементы, которые могут присутствовать в s .

Значение NumberStyles Элементы, разрешенные в s в дополнение к цифрам
None Только элемент digits .
AllowDecimalPoint Языковой элемент . и дробные разрядные элементы.
AllowExponent sПараметр также может использовать экспоненциальную нотацию. Этот флаг поддерживает значения в форме цифр E цифры; Дополнительные флаги необходимы для успешного анализа строк с элементами, такими как знаки положительного или отрицательного числа и символы десятичной запятой.
AllowLeadingWhite Элемент WS в начале s .
AllowTrailingWhite Элемент WS в конце s .
AllowLeadingSign Элемент Sign в начале s .
AllowTrailingSign Элемент Sign в конце s .
AllowParentheses Элемент Sign в виде круглых скобок, охватывающих числовое значение.
AllowThousands Элемент , .
AllowCurrencySymbol $ Элемент.
Currency Все. sПараметр не может представлять шестнадцатеричное число или число в экспоненциальной нотации.
Float Элемент WS в начале или конце s , знак в начале s и . знак. sПараметр также может использовать экспоненциальную нотацию.
Number ,,, ws sign И . элементов.
Any Все стили, кроме, s не могут представлять шестнадцатеричное число.

providerПараметр является IFormatProvider реализацией, например NumberFormatInfo CultureInfo объектом или. providerПараметр предоставляет сведения, зависящие от языка и региональных параметров, используемые при анализе. Если значение параметра provider равно null, используются текущий язык и региональные параметры потока.

DecimalОбъект имеет 29 разрядов точности. Если s представляет число, которое содержит более 29 цифр, но имеет дробную часть и находится внутри диапазона MaxValue и MinValue , число округляется, а не усекается до 29 цифр с помощью округления до ближайшего числа.

Если в s параметре во время операции синтаксического анализа обнаруживается разделитель, а применимые разделители денежных единиц или чисел в группах совпадают, то операция синтаксического анализа предполагает, что разделитель является десятичным разделителем, а не разделителем групп. Дополнительные сведения о разделителях см CurrencyDecimalSeparator . в разделе,, NumberDecimalSeparator CurrencyGroupSeparator и NumberGroupSeparator .

См. также раздел

Применяется к

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Преобразует представление числа в виде диапазона в его эквивалент Decimal, используя заданный стиль и формат для языка и региональных параметров.

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

Параметры

s
ReadOnlySpan<Char>

Диапазон, содержащий символы, которые представляют преобразуемое число.

style
NumberStyles

Побитовое сочетание значений NumberStyles, обозначающих элементы стиля, которые могут быть представлены в параметре s. Обычно указывается значение Number.

provider
IFormatProvider

Объект IFormatProvider, который предоставляет сведения о формате параметра s для определенного языка и региональных параметров.

Возвращаемое значение

Decimal

Число типа Decimal, равное числу, содержащемуся в параметре s, который задается параметрами style и provider.

Применяется к

Parse(String, IFormatProvider)

Преобразует строковое представление числа в его эквивалент Decimal, используя заданные сведения о формате для языка и региональных параметров.

public:
 static System::Decimal Parse(System::String ^ s, IFormatProvider ^ provider);
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

Параметры

s
String

Преобразовываемое строковое представление числа.

provider
IFormatProvider

Интерфейс IFormatProvider предоставляет сведения об анализе параметра s для соответствующего языка и региональных параметров.

Возвращаемое значение

Decimal

Число типа Decimal, равное числу, содержащемуся в параметре s, который задается параметром provider.

Исключения

s имеет значение null.

Формат параметра s неправильный.

s представляет число, которое меньше значения MinValue или больше значения MaxValue.

Примеры

В следующем примере показан обработчик событий нажатия кнопки в веб-форме. Он использует массив, возвращаемый HttpRequest.UserLanguages свойством, чтобы определить языковой стандарт пользователя. Затем создается экземпляр CultureInfo объекта, соответствующий этому языковому стандарту. NumberFormatInfoЗатем объект, принадлежащий этому CultureInfo объекту, передается Parse(String, IFormatProvider) методу для преобразования входных данных пользователя в Decimal значение.

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

Комментарии

Эта перегрузка Parse(String, IFormatProvider) метода обычно используется для преобразования текста, который может быть отформатирован различными способами, в Decimal значение. Например, можно использовать для преобразования текста, вводимых пользователем, в текстовое поле HTML в числовое значение.

sПараметр содержит номер формы:

Протокол писать [цифры,] цифры [. дробные цифры] [ws]

Элементы в квадратных скобках ([и]) являются необязательными. Каждый из элементов описан в таблице ниже.

Элемент Описание
ws Необязательный пробел.
sign Необязательный знак.
digits Последовательность цифр в диапазоне от 0 до 9.
, Символ разделителя тысяч, зависящий от языка и региональных параметров.
. Символ десятичной запятой, зависящий от языка и региональных параметров.
Дробные разряды Последовательность цифр в диапазоне от 0 до 9.

sПараметр интерпретируется с использованием NumberStyles.Number стиля. Это означает, что пробелы и разделители групп разрядов разрешены, а символы валют — нет. Чтобы явно определить элементы (например, символы валют, разделители тысяч и пробелы), которые могут присутствовать в s , используйте Decimal.Parse(String, NumberStyles, IFormatProvider) метод.

providerПараметр является IFormatProvider реализацией, например NumberFormatInfo CultureInfo объектом или. providerПараметр предоставляет сведения, зависящие от языка и региональных параметров, используемые при анализе. Если значение параметра provider равно null, используются текущий язык и региональные параметры потока.

DecimalОбъект имеет 29 разрядов точности. Если s представляет число, которое содержит более 29 цифр, но имеет дробную часть и находится внутри диапазона MaxValue и MinValue , число округляется, а не усекается до 29 цифр с помощью округления до ближайшего числа.

Если в s параметре во время операции синтаксического анализа обнаруживается разделитель, а применимые разделители денежных единиц или чисел в группах совпадают, то операция синтаксического анализа предполагает, что разделитель является десятичным разделителем, а не разделителем групп. Дополнительные сведения о разделителях см CurrencyDecimalSeparator . в разделе,, NumberDecimalSeparator CurrencyGroupSeparator и NumberGroupSeparator .

См. также раздел

Применяется к

Parse(String, NumberStyles)

Преобразует строковое представление числа с указанным стилем в его эквивалент в формате Decimal.

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

Параметры

s
String

Преобразовываемое строковое представление числа.

style
NumberStyles

Побитовое сочетание значений NumberStyles, обозначающих элементы стиля, которые могут быть представлены в параметре s. Обычно указывается значение Number.

Возвращаемое значение

Decimal

Число типа Decimal, равное числу, содержащемуся в параметре s, который задается параметром style.

Исключения

s имеет значение null.

style не является значением NumberStyles.

-или- style является значением AllowHexSpecifier.

Формат параметра s является неправильным.

Параметр s представляет число, которое меньше значения MinValue или больше значения MaxValue.

Примеры

В следующем примере кода метод используется Parse(String, NumberStyles) для анализа строковых представлений Decimal значений с помощью языка и региональных параметров en-US.

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

Комментарии

styleПараметр определяет элементы стиля (такие как разделители тысяч, пробелы и символы валют), допустимые в s параметре для выполнения операции синтаксического анализа. Он должен представлять собой сочетание битовых флагов из NumberStyles перечисления. Следующие NumberStyles члены не поддерживаются:

В зависимости от значения style s параметр может включать следующие элементы:

Протокол [$] писать [цифры,] цифры [. дробные цифры] [e [знак] цифры] [ws]

Элементы в квадратных скобках ([и]) являются необязательными. Каждый из элементов описан в таблице ниже.

Элемент Описание
ws Необязательный пробел. Пробел может присутствовать в начале s style , если включает NumberStyles.AllowLeadingWhite флаг, и может находиться в конце, s Если style включает NumberStyles.AllowTrailingWhite флаг.
$ Символ валюты, зависящий от языка и региональных параметров. Его расположение в строке определяется NumberFormatInfo.CurrencyNegativePattern NumberFormatInfo.CurrencyPositivePattern свойствами и текущего языка и региональных параметров. Символ валюты текущего языка и региональных параметров может отображаться в, s Если style включает NumberStyles.AllowCurrencySymbol флаг.
sign Необязательный знак. Знак может присутствовать в начале s style , если включает NumberStyles.AllowLeadingSign флаг, и может находиться в конце, s Если style включает NumberStyles.AllowTrailingSign флаг. Круглые скобки могут использоваться в s , чтобы указать отрицательное значение, если style включает NumberStyles.AllowParentheses флаг.
digits Последовательность цифр в диапазоне от 0 до 9.
, Символ разделителя тысяч, зависящий от языка и региональных параметров. Разделитель тысяч текущего языка и региональных параметров может отображаться в, s Если style включает NumberStyles.AllowThousands флаг.
. Символ десятичной запятой, зависящий от языка и региональных параметров. Символ десятичной запятой текущего языка и региональных параметров может присутствовать в, s Если style включает NumberStyles.AllowDecimalPoint флаг.
Дробные разряды Последовательность цифр в диапазоне от 0 до 9. Дробные цифры могут использоваться только в том s случае style , если включает NumberStyles.AllowDecimalPoint флаг.
e Символ "e" или "E", указывающий, что значение представлено в экспоненциальной нотации. sПараметр может представлять число в экспоненциальной нотации style , если включает NumberStyles.AllowExponent флаг.

Примечание

Все завершающие символы NUL (U + 0000) в s игнорируются операцией синтаксического анализа, независимо от значения style аргумента.

Строка с цифрами (которая соответствует None стилю) всегда анализируется успешно, если она находится в диапазоне Decimal типа. Остальные элементы NumberStyles управляют элементами, которые могут быть, но не обязательно присутствовать во входной строке. В следующей таблице показано, как отдельные NumberStyles члены влияют на элементы, которые могут присутствовать в s .

Значение NumberStyles Элементы, разрешенные в s в дополнение к цифрам
None Только элемент digits .
AllowDecimalPoint Языковой элемент . и дробные разрядные элементы.
AllowExponent sПараметр также может использовать экспоненциальную нотацию. Этот флаг поддерживает значения в форме цифр E цифры; Дополнительные флаги необходимы для успешного анализа строк с элементами, такими как знаки положительного или отрицательного числа и символы десятичной запятой.
AllowLeadingWhite Элемент WS в начале s .
AllowTrailingWhite Элемент WS в конце s .
AllowLeadingSign Элемент Sign в начале s .
AllowTrailingSign Элемент Sign в конце s .
AllowParentheses Элемент Sign в виде круглых скобок, охватывающих числовое значение.
AllowThousands Элемент , .
AllowCurrencySymbol $ Элемент.
Currency Все. sПараметр не может представлять шестнадцатеричное число или число в экспоненциальной нотации.
Float Элемент WS в начале или конце s , знак в начале s и . символ. sПараметр также может использовать экспоненциальную нотацию.
Number wsЭлементы, sign , и . .
Any Все стили, кроме, s не могут представлять шестнадцатеричное число.

sПараметр анализируется с помощью сведений о форматировании в NumberFormatInfo объекте, инициализированном для текущего языка и региональных параметров системы. Для получения дополнительной информации см. CurrentInfo.

DecimalИмеет 29 разрядов точности. Если s представляет число, которое содержит более 29 цифр, но имеет дробную часть и находится внутри диапазона MaxValue и MinValue , число округляется, а не усекается до 29 цифр с помощью округления до ближайшего числа.

Если в s параметре во время операции синтаксического анализа обнаруживается разделитель, styles включает NumberStyles.AllowThousands NumberStyles.AllowDecimalPoint значения и, а также применимые разделители десятичных или числовых чисел и групп совпадают, операция синтаксического анализа предполагает, что разделитель является десятичным разделителем, а не разделителем групп. Дополнительные сведения о разделителях см CurrencyDecimalSeparator . в разделе,, NumberDecimalSeparator CurrencyGroupSeparator и NumberGroupSeparator .

См. также раздел

Применяется к

Parse(String)

Преобразует строковое представление числа в его эквивалент типа Decimal.

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

Параметры

s
String

Преобразовываемое строковое представление числа.

Возвращаемое значение

Decimal

Эквивалентно числу, содержащемуся в свойстве s.

Исключения

s имеет значение null.

s имеет неправильный формат.

s представляет число, которое меньше значения MinValue или больше значения MaxValue.

Примеры

В следующем примере кода метод используется Parse(String) для анализа строковых представлений Decimal значений.

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

Комментарии

Параметр s содержит номер формы:

Протокол писать [цифры,] цифры [. дробные цифры] [ws]

Элементы в квадратных скобках ([и]) являются необязательными. Каждый из элементов описан в таблице ниже.

Элемент Описание
ws Необязательный пробел.
sign Необязательный знак.
digits Последовательность цифр в диапазоне от 0 до 9.
, Символ разделителя тысяч, зависящий от языка и региональных параметров.
. Символ десятичной запятой, зависящий от языка и региональных параметров.
Дробные разряды Последовательность цифр в диапазоне от 0 до 9.

Параметр s интерпретируется с использованием NumberStyles.Number стиля. Это означает, что пробелы и разделители групп разрядов разрешены, а символы валют — нет. Чтобы явно определить элементы (например, символы валют, разделители тысяч и пробелы), которые могут присутствовать в s , используйте либо метод, Decimal.Parse(String, NumberStyles) либо Decimal.Parse(String, NumberStyles, IFormatProvider) .

Параметр s анализируется с помощью сведений о форматировании в NumberFormatInfo инициализированном для текущего языка и региональных параметров системы. Для получения дополнительной информации см. CurrentInfo. Чтобы выполнить синтаксический анализ строки, используя сведения о форматировании другого языка и региональных параметров, используйте Decimal.Parse(String, IFormatProvider) Decimal.Parse(String, NumberStyles, IFormatProvider) метод или.

При необходимости значение s округляется с использованием округления до ближайшего значения.

DecimalИмеет 29 разрядов точности. Если s представляет число, которое содержит более 29 цифр, но имеет дробную часть и находится внутри диапазона MaxValue и MinValue , число округляется, а не усекается до 29 цифр с помощью округления до ближайшего числа.

Если во время операции синтаксического анализа в параметре встречается разделитель s , а применимые разделители денежных единиц или десятичного числа и групп совпадают, то операция синтаксического анализа предполагает, что разделитель является десятичным разделителем, а не разделителем групп. Дополнительные сведения о разделителях см CurrencyDecimalSeparator . в разделе,, NumberDecimalSeparator CurrencyGroupSeparator и NumberGroupSeparator .

См. также раздел

Применяется к