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
- Исходный код:
- 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.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 представляет число меньше Десятичного minValue или больше Десятичного.MaxValue. Этот параметр передается uininitialized; любое исходное result значение перезаписывается.
Возвращаемое значение
true Значение , если s оно было успешно преобразовано; в противном случае false.
Применяется к
TryParse(String, Decimal)
- Исходный код:
- Decimal.cs
- Исходный код:
- Decimal.cs
- Исходный код:
- 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 числом в допустимом формате или представляет число меньше Десятичного minValue или больше Десятичного.MaxValue. Этот параметр передается uininitialized; любое исходное 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] [знак] [цифры,]цифры[.дробные цифры][ws]
Элементы в квадратных скобках ([ и ]) являются необязательными. Каждый из элементов описан в таблице ниже.
| Элемент | Description |
|---|---|
| ws | Необязательный пробел. |
| знак | Необязательный знак. |
| Цифр | Последовательность цифр от 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, NumberDecimalSeparatorCurrencyGroupSeparatorи NumberGroupSeparator.
См. также раздел
Применяется к
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Decimal)
- Исходный код:
- Decimal.cs
- Исходный код:
- Decimal.cs
- Исходный код:
- 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
- Исходный код:
- 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
- Исходный код:
- 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
- Исходный код:
- 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.cs
- Исходный код:
- Decimal.cs
Преобразует представление диапазона числа в его Decimal эквивалент, используя указанный стиль и формат языка и региональных параметров. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.
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, [Runtime::InteropServices::Out] System::Decimal % result);
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формату, или представляет число меньше десятичного.minValue или больше , чем Decimal.MaxValue. Этот параметр передается uininitialized; любое исходное result значение перезаписывается.
Возвращаемое значение
true Значение , если s оно было успешно преобразовано; в противном случае false.
Применяется к
TryParse(String, NumberStyles, IFormatProvider, Decimal)
- Исходный код:
- Decimal.cs
- Исходный код:
- Decimal.cs
- Исходный код:
- 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формату, или представляет число меньше десятичного.minValue или больше , чем Decimal.MaxValue. Этот параметр передается uininitialized; любое исходное result значение перезаписывается.
Возвращаемое значение
true Значение , если s оно было успешно преобразовано; в противном случае false.
Исключения
Примеры
В следующем примере показано использование 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] [$] [знак] [цифры,]цифры[.дробные цифры][знак][знак][ws]
Элементы в квадратных скобках ([ и ]) являются необязательными. Каждый из элементов описан в таблице ниже.
| Элемент | Description |
|---|---|
| ws | Необязательный пробел. Пробел может отображаться в начале s , если style содержит NumberStyles.AllowLeadingWhite флаг. Он может появиться в конце s , если style содержит NumberStyles.AllowTrailingWhite флаг. |
| $ | Символ валюты, зависящий от языка и региональных параметров. Его позиция в строке определяется NumberFormatInfo.CurrencyNegativePattern или NumberFormatInfo.CurrencyPositivePattern свойствами NumberFormatInfo объекта, возвращаемого IFormatProvider.GetFormat методом provider параметра. Символ валюты может отображаться в s том случае, если style он включает NumberStyles.AllowCurrencySymbol флаг. |
| знак | Необязательный знак. |
| Цифр | Последовательность цифр от 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, NumberDecimalSeparatorCurrencyGroupSeparatorи NumberGroupSeparator.