Decimal.TryParse Метод

Определение

Преобразует строковое представление числа в его эквивалент типа Decimal. Возвращает значение, указывающее, успешно ли выполнено преобразование.

Перегрузки

TryParse(ReadOnlySpan<Byte>, Decimal)

Пытается преобразовать диапазон символов UTF-8, содержащий строковое представление числа, в его десятичный эквивалент со знаком.

TryParse(ReadOnlySpan<Char>, Decimal)

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

TryParse(String, Decimal)

Преобразует строковое представление числа в его эквивалент типа Decimal. Возвращает значение, указывающее, успешно ли выполнено преобразование.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Decimal)

Пытается проанализировать диапазон символов UTF-8 в значение.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Decimal)

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

TryParse(String, IFormatProvider, Decimal)

Пытается проанализировать строку в значение.

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

Пытается проанализировать диапазон символов UTF-8 в значение.

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

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

TryParse(String, NumberStyles, IFormatProvider, Decimal)

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

TryParse(ReadOnlySpan<Byte>, Decimal)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Пытается преобразовать диапазон символов UTF-8, содержащий строковое представление числа, в его десятичный эквивалент со знаком.

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

Параметры

utf8Text
ReadOnlySpan<Byte>

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

result
Decimal

При возврате этим методом содержит десятичное значение со знаком, эквивалентное числу, содержалось в utf8Text , если преобразование выполнено успешно, или ноль, если преобразование завершилось сбоем. Этот параметр передается неинициализированным. Любое значение, первоначально предоставленное в результате, будет перезаписано.

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

Значение true, если параметр utf8Text успешно преобразован; в противном случае — значение false.

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

TryParse(ReadOnlySpan<Char>, Decimal)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Преобразует представление числа в виде диапазона в его эквивалент 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

Параметры

s
ReadOnlySpan<Char>

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

result
Decimal

По возвращении из этого метода содержит число типа Decimal, эквивалентное числовому значению, содержащемуся в параметре s, если преобразование выполнено успешно, или нулю, если оно завершилось ошибкой. Преобразование завершается ошибкой s , если параметр имеет значение null или Empty, не является числом в формате, совместимом с style, или представляет число меньше Decimal.MinValue или больше Decimal.MaxValue. Этот параметр передается неинициализированным; любое значение, изначально предоставленное в параметре result, перезаписывается.

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

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

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

TryParse(String, Decimal)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Преобразует строковое представление числа в его эквивалент типа Decimal. Возвращает значение, указывающее, успешно ли выполнено преобразование.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse (string s, out 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

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

result
Decimal

По возвращении из этого метода содержит число типа Decimal, эквивалентное числовому значению, содержащемуся в параметре s, если преобразование выполнено успешно, или нулю, если оно завершилось ошибкой. Преобразование завершается ошибкой s , если параметр имеет значение null или Empty, не является числом в допустимом формате или представляет число меньше Decimal.MinValue или больше Decimal.MaxValue. Этот параметр передается неинициализированным; любое значение, изначально предоставленное в параметре result, перезаписывается.

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

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

Примеры

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

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
// Parse a floating-point value with a thousands separator.
let value = "1,643.57"
match Decimal.TryParse value with
| true, number ->
    printfn $"{number}"
| _ ->
    printfn $"Unable to parse '{value}'."

// Parse a floating-point value with a currency symbol and a
// thousands separator.
let value = "$1,643.57"
match Decimal.TryParse value with
| true, number ->
    printfn $"{number}"
| _ -> 
    printfn $"Unable to parse '{value}'."

// Parse value in exponential notation.
let value = "-1.643e6"
match Decimal.TryParse value with
| true, number ->
    printfn $"{number}"
| _ -> 
    printfn $"Unable to parse '{value}'."

// Parse a negative integer value.
let value = "-1689346178821"
match Decimal.TryParse value with
| true, number ->
    printfn $"{number}"
| _ -> 
    printfn $"Unable to parse '{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) метода тем, что возвращает логическое значение, указывающее, была ли операция синтаксического анализа успешной, а не возвращала проанализированное числовое значение. Это избавляет от необходимости использовать обработку исключений FormatException для тестирования в случае, если s он является недопустимым и не может быть успешно проанализирован.

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

[ws] [знак] [digits,]digits[.fractional-digits][ws]

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

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

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

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

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

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

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

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

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

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Decimal)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Пытается проанализировать диапазон символов UTF-8 в значение.

public:
 static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = IUtf8SpanParsable<System::Decimal>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out decimal result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * decimal -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Decimal) As Boolean

Параметры

utf8Text
ReadOnlySpan<Byte>

Диапазон символов UTF-8 для анализа.

provider
IFormatProvider

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

result
Decimal

При возврате содержит результат успешного анализа utf8Text или неопределенное значение при сбое.

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

true Значение , если utf8Text анализ выполнен успешно; в противном случае — значение false.

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, Decimal)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

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

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

Параметры

s
ReadOnlySpan<Char>

Диапазон символов для анализа.

provider
IFormatProvider

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

result
Decimal

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

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

true Значение , если s анализ выполнен успешно; в противном случае — значение false.

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

TryParse(String, IFormatProvider, Decimal)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Пытается проанализировать строку в значение.

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

Параметры

s
String

Строка для анализа.

provider
IFormatProvider

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

result
Decimal

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

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

true Значение , если s анализ выполнен успешно; в противном случае — значение false.

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

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

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Пытается проанализировать диапазон символов UTF-8 в значение.

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

Параметры

utf8Text
ReadOnlySpan<Byte>

Диапазон символов UTF-8 для анализа.

style
NumberStyles

Побитовое сочетание стилей чисел, которые могут присутствовать в utf8Text.

provider
IFormatProvider

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

result
Decimal

При возврате содержит результат успешного анализа utf8Text или неопределенное значение при сбое.

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

true Значение , если utf8Text анализ выполнен успешно; в противном случае — значение false.

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

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

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

Преобразует представление числа в виде диапазона в его эквивалент 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, [Runtime::InteropServices::Out] System::Decimal % result) = System::Numerics::INumberBase<System::Decimal>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out 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

Параметры

s
ReadOnlySpan<Char>

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

style
NumberStyles

Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s. Обычно указывается значение Number.

provider
IFormatProvider

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

result
Decimal

По возвращении из этого метода содержит число типа Decimal, эквивалентное числовому значению, содержащемуся в параметре s, если преобразование выполнено успешно, или нулю, если оно завершилось ошибкой. Преобразование завершается ошибкой s , если параметр имеет значение null или Empty, не является числом в формате, совместимом с style, или представляет число меньше Decimal.MinValue или больше Decimal.MaxValue. Этот параметр передается неинициализированным; любое значение, изначально предоставленное в параметре result, перезаписывается.

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

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

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

TryParse(String, NumberStyles, IFormatProvider, Decimal)

Исходный код:
Decimal.cs
Исходный код:
Decimal.cs
Исходный код:
Decimal.cs

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

public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result);
public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = System::Numerics::INumberBase<System::Decimal>::TryParse;
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out 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

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

style
NumberStyles

Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s. Обычно указывается значение Number.

provider
IFormatProvider

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

result
Decimal

По возвращении из этого метода содержит число типа Decimal, эквивалентное числовому значению, содержащемуся в параметре s, если преобразование выполнено успешно, или нулю, если оно завершилось ошибкой. Преобразование завершается ошибкой s , если параметр имеет значение null или Empty, не является числом в формате, совместимом с style, или представляет число меньше Decimal.MinValue или больше Decimal.MaxValue. Этот параметр передается неинициализированным; любое значение, изначально предоставленное в параметре result, перезаписывается.

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

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

Исключения

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

-или-

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

Примеры

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

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'.
// Parse currency value using en-GB culture.
let value = "£1,097.63"
let style = NumberStyles.Number ||| NumberStyles.AllowCurrencySymbol
let culture = CultureInfo.CreateSpecificCulture "en-GB"
match Decimal.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ -> 
    printfn $"Unable to convert '{value}'."
// Displays:
//       Converted '£1,097.63' to 1097.63.

let value = "1345,978"
let style = NumberStyles.AllowDecimalPoint
let culture = CultureInfo.CreateSpecificCulture "fr-FR"
match Decimal.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ -> 
    printfn $"Unable to convert '{value}'."
// Displays:
//       Converted '1345,978' to 1345.978.

let value = "1.345,978"
let style = NumberStyles.AllowDecimalPoint ||| NumberStyles.AllowThousands
let culture = CultureInfo.CreateSpecificCulture "es-ES"
match Decimal.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ -> 
    printfn $"Unable to convert '{value}'."
// Displays:
//       Converted '1.345,978' to 1345.978.

let value = "1 345,978"
match Decimal.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ -> 
    printfn $"Unable to convert '{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) метода тем, что возвращает логическое значение, указывающее, была ли операция синтаксического анализа успешной, а не возвращала проанализированное числовое значение. Это избавляет от необходимости использовать обработку исключений FormatException для тестирования в случае, если s он является недопустимым и не может быть успешно проанализирован.

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

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

[ws] [$] [знак] [цифры,]digits[.fractional-digits][e[sign]digits][ws]

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

Элемент Описание
ws Необязательный пробел. Пробел может отображаться в начале , s если style включает флаг NumberStyles.AllowLeadingWhite . Он может отображаться в конце , s если style включает флаг NumberStyles.AllowTrailingWhite .
$ Символ валюты, зависящий от языка и региональных параметров. Его положение в строке определяется свойствами NumberFormatInfo.CurrencyNegativePattern или NumberFormatInfo.CurrencyPositivePattern объекта, NumberFormatInfo возвращаемым методом IFormatProvider.GetFormatprovider параметра . Символ валюты может отображаться в , s если style включает NumberStyles.AllowCurrencySymbol флаг .
sign Необязательный знак.
digits Последовательность цифр в диапазоне от 0 до 9.
. Символ десятичной запятой для конкретного языка и региональных параметров.
дробные цифры Последовательность цифр в диапазоне от 0 до 9.

Параметр style задает допустимый s формат параметра и может быть одной или несколькими NumberStyles перечисленными константами, объединенными с помощью побитовой операции OR. Если style имеет значение NULL, s интерпретируется с помощью NumberStyles.Number стиля .

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

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

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

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

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