Прочитать на английском

Поделиться через


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<byte> utf8Text, out decimal result);

Параметры

utf8Text
ReadOnlySpan<Byte>

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

result
Decimal

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET 8, 9, 10

TryParse(ReadOnlySpan<Char>, Decimal)

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

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

public static bool TryParse(ReadOnlySpan<char> s, out decimal result);

Параметры

s
ReadOnlySpan<Char>

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

result
Decimal

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Standard 2.1

TryParse(String, Decimal)

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

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

public static bool TryParse(string s, out decimal result);
public static bool TryParse(string? s, out decimal result);

Параметры

s
String

Строковое представление преобразуемого числа.

result
Decimal

При возврате этого метода содержит Decimal число, эквивалентное числовым значениям, содержащимся в s, если преобразование выполнено успешно или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если параметр snull или Empty, не является числом в допустимом формате или представляет число меньше, чем Десятичное минимальное значение или больше Десятичное.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

Комментарии

Эта перегрузка отличается от метода Decimal.Parse(String) путем возврата логического значения, указывающего, выполнена ли операция синтаксического анализа вместо возврата числового значения синтаксического анализа. Это устраняет необходимость использовать обработку исключений для проверки FormatException в случае, если s является недопустимым и не может быть успешно проанализирован.

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

[ws] [знак] [цифры,]цифры[.дробные цифры][ws]

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

Элемент Описание
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, NumberDecimalSeparator, CurrencyGroupSeparatorи NumberGroupSeparator.

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Decimal)

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

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

public static bool TryParse(ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out decimal result);

Параметры

utf8Text
ReadOnlySpan<Byte>

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

provider
IFormatProvider

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

result
Decimal

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET 8, 9, 10

TryParse(ReadOnlySpan<Char>, IFormatProvider, Decimal)

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

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

public static bool TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, out decimal result);

Параметры

s
ReadOnlySpan<Char>

Диапазон символов для синтаксического анализа.

provider
IFormatProvider

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

result
Decimal

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

TryParse(String, IFormatProvider, Decimal)

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

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

public static bool TryParse(string? s, IFormatProvider? provider, out decimal result);

Параметры

s
String

Строка для синтаксического анализа.

provider
IFormatProvider

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

result
Decimal

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

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

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

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

public static bool TryParse(ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out decimal result);

Параметры

utf8Text
ReadOnlySpan<Byte>

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

style
NumberStyles

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

provider
IFormatProvider

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

result
Decimal

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET 8, 9, 10

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, out decimal result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);

Параметры

s
ReadOnlySpan<Char>

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

style
NumberStyles

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

provider
IFormatProvider

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

result
Decimal

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Standard 2.1

TryParse(String, NumberStyles, IFormatProvider, Decimal)

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

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

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);

Параметры

s
String

Строковое представление преобразуемого числа.

style
NumberStyles

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

provider
IFormatProvider

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

result
Decimal

При возврате этого метода содержит Decimal число, эквивалентное числовым значениям, содержащимся в s, если преобразование выполнено успешно или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если параметр snull или Empty, не является числом в формате, соответствующим style, или представляет число меньше Десятичное.МинЗначение или больше Десятичное.MaxValue. Этот параметр передается uininitialized; любое исходное значение, предоставленное в 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'.

Комментарии

Эта перегрузка отличается от метода Decimal.Parse(String, NumberStyles, IFormatProvider) путем возврата логического значения, указывающего, выполнена ли операция синтаксического анализа вместо возврата числового значения синтаксического анализа. Это устраняет необходимость использовать обработку исключений для проверки FormatException в случае, если s является недопустимым и не может быть успешно проанализирован.

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

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

[ws] [$] [знак] [цифры,]цифры[.дробные цифры][знак][знак][ws]

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

Элемент Описание
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 предоставляет сведения о языках и региональных параметрах, используемых в синтаксическом анализе. Если providernull, используется текущий язык и региональные параметры потока.

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0