Decimal.TryParse Decimal.TryParse Decimal.TryParse Decimal.TryParse Method

Определение

Преобразует строковое представление числа в его эквивалент типа Decimal.Converts the string representation of a number to its Decimal equivalent. Возвращает значение, указывающее, успешно ли выполнено преобразование.A return value indicates whether the conversion succeeded or failed.

Перегрузки

TryParse(String, NumberStyles, IFormatProvider, Decimal) TryParse(String, NumberStyles, IFormatProvider, Decimal) TryParse(String, NumberStyles, IFormatProvider, Decimal) TryParse(String, NumberStyles, IFormatProvider, Decimal)

Преобразует строковое представление числа в его эквивалент Decimal, используя заданный стиль и формат для языка и региональных параметров.Converts the string representation of a number to its Decimal equivalent using the specified style and culture-specific format. Возвращает значение, указывающее, успешно ли выполнено преобразование.A return value indicates whether the conversion succeeded or failed.

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal) TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal) TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal) TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal)
TryParse(ReadOnlySpan<Char>, Decimal) TryParse(ReadOnlySpan<Char>, Decimal) TryParse(ReadOnlySpan<Char>, Decimal) TryParse(ReadOnlySpan<Char>, Decimal)
TryParse(String, Decimal) TryParse(String, Decimal) TryParse(String, Decimal) TryParse(String, Decimal)

Преобразует строковое представление числа в его эквивалент типа Decimal.Converts the string representation of a number to its Decimal equivalent. Возвращает значение, указывающее, успешно ли выполнено преобразование.A return value indicates whether the conversion succeeded or failed.

TryParse(String, NumberStyles, IFormatProvider, Decimal) TryParse(String, NumberStyles, IFormatProvider, Decimal) TryParse(String, NumberStyles, IFormatProvider, Decimal) TryParse(String, NumberStyles, IFormatProvider, Decimal)

Преобразует строковое представление числа в его эквивалент Decimal, используя заданный стиль и формат для языка и региональных параметров.Converts the string representation of a number to its Decimal equivalent using the specified style and culture-specific format. Возвращает значение, указывающее, успешно ли выполнено преобразование.A return value indicates whether the conversion succeeded or failed.

public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Decimal) As Boolean

Параметры

s
String String String String

Преобразовываемое строковое представление числа.The string representation of the number to convert.

style
NumberStyles NumberStyles NumberStyles NumberStyles

Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s.A bitwise combination of enumeration values that indicates the permitted format of s. Обычно указывается значение Number.A typical value to specify is Number.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Объект, который предоставляет сведения об анализе параметра s для определенного языка и региональных параметров.An object that supplies culture-specific parsing information about s.

result
Decimal Decimal Decimal Decimal

По возвращении из этого метода содержит число типа Decimal, эквивалентное числовому значению, содержащемуся в параметре s, если преобразование выполнено успешно, или нулю, если оно завершилось ошибкой.When this method returns, contains the Decimal number that is equivalent to the numeric value contained in s, if the conversion succeeded, or zero if the conversion failed. Преобразование завершается ошибкой, если параметр s имеет значение null или Empty, не является числом, формат которого совместим с параметром style, или представляет собой число, которое меньше MinValue или больше MaxValue.The conversion fails if the s parameter is null or Empty, is not a number in a format compliant with style, or represents a number less than MinValue or greater than MaxValue. Этот параметр передается неинициализированным; любое значение, изначально предоставленное в параметре result, перезаписывается.This parameter is passed uininitialized; any value originally supplied in result is overwritten.

Возвраты

Значение true, если параметр s успешно преобразован; в противном случае — значение false.true if s was converted successfully; otherwise, false.

Исключения

style не является значением NumberStyles.style is not a NumberStyles value.

- или --or- Значение параметра style равно значению AllowHexSpecifier.style is the AllowHexSpecifier value.

Примеры

В следующем примере показано использование TryParse(String, NumberStyles, IFormatProvider, Decimal) метода для синтаксического анализа строкового представления числа с определенным стилем, которое форматируется с использованием соглашений конкретного языка и региональных параметров.The following example demonstrates the use of the TryParse(String, NumberStyles, IFormatProvider, Decimal) method to parse the string representation of a number that has a particular style and is formatted using the conventions of a particular culture.

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

// Parse currency value using en-GB culture.
value = "£1,097.63";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("en-GB");
if (Decimal.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays: 
//       Converted '£1,097.63' to 1097.63.

value = "1345,978";
style = NumberStyles.AllowDecimalPoint;
culture = CultureInfo.CreateSpecificCulture("fr-FR");
if (Decimal.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Converted '1345,978' to 1345.978.

value = "1.345,978";
style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands;
culture = CultureInfo.CreateSpecificCulture("es-ES");
if (Decimal.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays: 
//       Converted '1.345,978' to 1345.978.

value = "1 345,978";
if (Decimal.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Unable to convert '1 345,978'.
Dim value As String
Dim style As NumberStyles
Dim culture As CultureInfo
Dim number As Decimal

' Parse currency value using en-GB culture.
value = "£1,097.63"
style = NumberStyles.Number Or NumberStyles.AllowCurrencySymbol
culture = CultureInfo.CreateSpecificCulture("en-GB")
If Decimal.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays: 
'       Converted '£1,097.63' to 1097.63.

value = "1345,978"
style = NumberStyles.AllowDecimalPoint
culture = CultureInfo.CreateSpecificCulture("fr-FR")
If Decimal.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays:
'       Converted '1345,978' to 1345.978.

value = "1.345,978"
style = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands
culture = CultureInfo.CreateSpecificCulture("es-ES")
If Decimal.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays: 
'       Converted '1.345,978' to 1345.978.

value = "1 345,978"
If Decimal.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays:
'       Unable to convert '1 345,978'.

Комментарии

Эта перегрузка отличается от Decimal.Parse(String, NumberStyles, IFormatProvider) метода путем возвращения логического значения, которое указывает, завершилась ли операция синтаксического анализа, а не возвращать проанализированное числовое значение.This overload differs from the Decimal.Parse(String, NumberStyles, IFormatProvider) method by returning a Boolean value that indicates whether the parse operation succeeded instead of returning the parsed numeric value. Это исключает необходимость использования обработки исключений для проверки FormatException в случае, s если событие является недопустимым и его невозможно успешно проанализировать.It eliminates the need to use exception handling to test for a FormatException in the event that s is invalid and cannot be successfully parsed.

Параметр определяет допустимый формат s параметра для выполнения операции синтаксического анализа. styleThe style parameter defines the allowable format of the s parameter for the parse operation to succeed. Он должен представлять собой сочетание битовых флагов из NumberStyles перечисления.It must be a combination of bit flags from the NumberStyles enumeration. Следующие NumberStyles члены не поддерживаются:The following NumberStyles members are not supported:

В зависимости от значения Style s параметр может включать следующие элементы:Depending on the value of style, the s parameter may include the following elements:

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

Элементы в квадратных скобках ([и]) являются необязательными.Elements in square brackets ([ and ]) are optional. Каждый из элементов описан в таблице ниже.The following table describes each element.

ЭлементElement ОписаниеDescription
wsws Необязательный пробел.Optional white space. Пробелы могут присутствовать в начале s , если style включает NumberStyles.AllowLeadingWhite флаг.White space can appear at the beginning of s if style includes the NumberStyles.AllowLeadingWhite flag. Он может находиться в конце s , если style включает NumberStyles.AllowTrailingWhite флаг.It can appear at the end of s if style includes the NumberStyles.AllowTrailingWhite flag.
$ Символ валюты, зависящий от языка и региональных параметров.A culture-specific currency symbol. Его NumberFormatInfo.CurrencyNegativePattern расположение в строке определяется свойствами NumberFormatInfo или NumberFormatInfo.CurrencyPositivePattern объекта, возвращаемыми IFormatProvider.GetFormat методом provider параметра.Its position in the string is defined by the NumberFormatInfo.CurrencyNegativePattern or NumberFormatInfo.CurrencyPositivePattern properties of the NumberFormatInfo object returned by the IFormatProvider.GetFormat method of the provider parameter. Символ валюты может отображаться в s , NumberStyles.AllowCurrencySymbol если style включает флаг.The currency symbol can appear in s if style includes the NumberStyles.AllowCurrencySymbol flag.
signsign Необязательный знак.An optional sign.
digitsdigits Последовательность цифр в диапазоне от 0 до 9.A sequence of digits ranging from 0 to 9.
.. Символ десятичной запятой, зависящий от языка и региональных параметров.A culture-specific decimal point symbol.
Дробные разрядыfractional-digits Последовательность цифр в диапазоне от 0 до 9.A sequence of digits ranging from 0 to 9.

Параметр задает разрешенный формат s параметра и может быть одной или несколькими NumberStyles перечисляемыми константами, объединенными с помощью побитовой операции или. styleThe style parameter specifies the permitted format of the s parameter, and can be one or more NumberStyles enumerated constants combined using a bitwise OR operation. Если style значение равно NULL s , интерпретируется с использованием NumberStyles.Number стиля.If style is null, s is interpreted using the NumberStyles.Number style.

Параметр является реализацией, такой как NumberFormatInfo объект или CultureInfo. provider IFormatProviderThe provider parameter is an IFormatProvider implementation such as a NumberFormatInfo or CultureInfo object. Параметр provider предоставляет сведения, зависящие от языка и региональных параметров, используемые при анализе.The provider parameter supplies culture-specific information used in parsing. Если значение параметра provider равно null, используются текущий язык и региональные параметры потока.If provider is null, the thread current culture is used.

Decimal Объект имеет 29 разрядов точности.A Decimal object has 29 digits of precision. Если s представляет число, которое содержит более 29 цифр, но имеет дробную часть и находится внутри MaxValue диапазона и MinValue, число округляется, а не усекается до 29 цифр с помощью округления до ближайшего числа.If s represents a number that has more than 29 digits, but has a fractional part and is within the range of MaxValue and MinValue, the number is rounded, not truncated, to 29 digits using rounding to nearest.

Если в s параметре во время операции синтаксического анализа встречается разделитель, а применимые разделители денежных единиц или десятичного числа и групп совпадают, то операция синтаксического анализа предполагает, что разделитель является десятичным разделителем, а не группой. двоеточи.If a separator is encountered in the s parameter during a parse operation, and the applicable currency or number decimal and group separators are the same, the parse operation assumes that the separator is a decimal separator rather than a group separator. CurrencyDecimalSeparatorДополнительные сведения о разделителях см. CurrencyGroupSeparatorв разделе NumberDecimalSeparator,, и NumberGroupSeparator.For more information about separators, see CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, and NumberGroupSeparator.

Дополнительно

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal) TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal) TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal) TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal)

public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Decimal) As Boolean

Параметры

Возвраты

TryParse(ReadOnlySpan<Char>, Decimal) TryParse(ReadOnlySpan<Char>, Decimal) TryParse(ReadOnlySpan<Char>, Decimal) TryParse(ReadOnlySpan<Char>, Decimal)

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse (ReadOnlySpan<char> s, out decimal result);
static member TryParse : ReadOnlySpan<char> * decimal -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Decimal) As Boolean

Параметры

Возвраты

TryParse(String, Decimal) TryParse(String, Decimal) TryParse(String, Decimal) TryParse(String, Decimal)

Преобразует строковое представление числа в его эквивалент типа Decimal.Converts the string representation of a number to its Decimal equivalent. Возвращает значение, указывающее, успешно ли выполнено преобразование.A return value indicates whether the conversion succeeded or failed.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse (string s, out decimal result);
static member TryParse : string * decimal -> bool
Public Shared Function TryParse (s As String, ByRef result As Decimal) As Boolean

Параметры

s
String String String String

Преобразовываемое строковое представление числа.The string representation of the number to convert.

result
Decimal Decimal Decimal Decimal

По возвращении из этого метода содержит число типа Decimal, эквивалентное числовому значению, содержащемуся в параметре s, если преобразование выполнено успешно, или нулю, если оно завершилось ошибкой.When this method returns, contains the Decimal number that is equivalent to the numeric value contained in s, if the conversion succeeded, or zero if the conversion failed. Преобразование завершается сбоем, если значение параметра s равно null или Empty, не является числом допустимого формата или представляет число меньше MinValue или больше MaxValue.The conversion fails if the s parameter is null or Empty, is not a number in a valid format, or represents a number less than MinValue or greater than MaxValue. Этот параметр передается неинициализированным; любое значение, изначально предоставленное в параметре result, перезаписывается.This parameter is passed uininitialized; any value originally supplied in result is overwritten.

Возвраты

Значение true, если параметр s успешно преобразован; в противном случае — значение false.true if s was converted successfully; otherwise, false.

Примеры

В следующем примере Decimal.TryParse(String, Decimal) метод используется для преобразования строковых представлений числовых значений в Decimal значения.The following example uses the Decimal.TryParse(String, Decimal) method to convert the string representations of numeric values to Decimal values. Предполагается, что en-US является текущим языком и региональными параметрами.It assumes that en-US is the current culture.

string value;
decimal number;

// Parse a floating-point value with a thousands separator.
value = "1,643.57";
if (Decimal.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);      

// Parse a floating-point value with a currency symbol and a 
// thousands separator.
value = "$1,643.57";
if (Decimal.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);   

// Parse value in exponential notation.
value = "-1.643e6";
if (Decimal.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);   

// Parse a negative integer value.
value = "-1689346178821";
if (Decimal.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);   
// The example displays the following output to the console:
//       1643.57
//       Unable to parse '$1,643.57'.
//       Unable to parse '-1.643e6'.
//       -1689346178821      
Dim value As String
Dim number As Decimal

' Parse a floating-point value with a thousands separator.
value = "1,643.57"
If Decimal.TryParse(value, number) Then
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)      
End If   

' Parse a floating-point value with a currency symbol and a 
' thousands separator.
value = "$1,643.57"
If Decimal.TryParse(value, number) Then
   Console.WriteLine(number)  
Else
   Console.WriteLine("Unable to parse '{0}'.", value)   
End If

' Parse value in exponential notation.
value = "-1.643e6"
If Decimal.TryParse(value, number)
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)   
End If

' Parse a negative integer value.
value = "-1689346178821"
If Decimal.TryParse(value, number)
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)   
End If
' The example displays the following output to the console:
'       1643.57
'       Unable to parse '$1,643.57'.
'       Unable to parse '-1.643e6'.
'       -1689346178821      

Комментарии

Эта перегрузка отличается от Decimal.Parse(String) метода путем возвращения логического значения, которое указывает, завершилась ли операция синтаксического анализа, а не возвращать проанализированное числовое значение.This overload differs from the Decimal.Parse(String) method by returning a Boolean value that indicates whether the parse operation succeeded instead of returning the parsed numeric value. Это исключает необходимость использования обработки исключений для проверки FormatException в случае, s если событие является недопустимым и его невозможно успешно проанализировать.It eliminates the need to use exception handling to test for a FormatException in the event that s is invalid and cannot be successfully parsed.

Параметр s содержит номер формы:Parameter s contains a number of the form:

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

Элементы в квадратных скобках ([и]) являются необязательными.Elements in square brackets ([ and ]) are optional. Каждый из элементов описан в таблице ниже.The following table describes each element.

ЭлементElement ОписаниеDescription
wsws Необязательный пробел.Optional white space.
signsign Необязательный знак.An optional sign.
digitsdigits Последовательность цифр в диапазоне от 0 до 9.A sequence of digits ranging from 0 to 9.
,, Символ разделителя тысяч, зависящий от языка и региональных параметров.A culture-specific thousands separator symbol.
.. Символ десятичной запятой, зависящий от языка и региональных параметров.A culture-specific decimal point symbol.
Дробные разрядыfractional-digits Последовательность цифр в диапазоне от 0 до 9.A sequence of digits ranging from 0 to 9.

Параметр s интерпретируется NumberStyles.Number с использованием стиля.Parameter s is interpreted using the NumberStyles.Number style. Это означает, что пробелы и разделители групп разрядов разрешены, а символы валют — нет.This means that white space and thousands separators are allowed but currency symbols are not. Чтобы явно определить элементы (например, символы валют, разделители тысяч и пробелы), которые могут присутствовать в s, Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) используйте перегрузку метода.To explicitly define the elements (such as currency symbols, thousands separators, and white space) that can be present in s, use the Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) method overload.

Параметр s анализируется с помощью сведений о форматировании NumberFormatInfo в объекте, инициализированном для текущего языка и региональных параметров системы.Parameter s is parsed using the formatting information in a NumberFormatInfo object initialized for the current system culture. Для получения дополнительной информации см. CurrentInfo.For more information, see CurrentInfo. Чтобы выполнить синтаксический анализ строки, используя сведения о форматировании некоторых других указанных региональных Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) параметров, используйте перегрузку метода.To parse a string using the formatting information of some other specified culture, use the Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) method overload.

При необходимости значение округляется с использованием s округления до ближайшего значения.If necessary, the value of s is rounded using rounding to nearest.

Decimal Объект имеет 29 разрядов точности.A Decimal object has 29 digits of precision. Если s представляет число, которое содержит более 29 цифр, но имеет дробную часть и находится внутри MaxValue диапазона и MinValue, число округляется, а не усекается до 29 цифр с помощью округления до ближайшего числа.If s represents a number that has more than 29 digits, but has a fractional part and is within the range of MaxValue and MinValue, the number is rounded, not truncated, to 29 digits using rounding to nearest.

Если во время операции синтаксического анализа в s параметре встречается разделитель, а применимые разделители денежных единиц или десятичного числа и групп совпадают, то операция синтаксического анализа предполагает, что разделитель является десятичным разделителем, а не группой. двоеточи.If during a parse operation a separator is encountered in the s parameter, and the applicable currency or number decimal and group separators are the same, the parse operation assumes that the separator is a decimal separator rather than a group separator. CurrencyDecimalSeparatorДополнительные сведения о разделителях см. CurrencyGroupSeparatorв разделе NumberDecimalSeparator,, и NumberGroupSeparator.For more information about separators, see CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, and NumberGroupSeparator.

Дополнительно

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