Single.TryParse Метод

Определение

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

Перегрузки

TryParse(ReadOnlySpan<Char>, IFormatProvider, Single)

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

TryParse(ReadOnlySpan<Char>, Single)

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

TryParse(String, Single)

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

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single)

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

TryParse(String, IFormatProvider, Single)

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

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

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

TryParse(ReadOnlySpan<Byte>, Single)

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

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

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

TryParse(String, NumberStyles, IFormatProvider, Single)

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

Комментарии

В .NET Core 3.0 и более поздних версиях слишком большие значения округляются до PositiveInfinity или NegativeInfinity в соответствии со спецификацией IEEE 754. В предыдущих версиях, включая платформа .NET Framework, анализ значения, которое было слишком большим для представления, приводил к сбою.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Single)

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

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

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

Параметры

s
ReadOnlySpan<Char>

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

provider
IFormatProvider

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

result
Single

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

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

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

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

TryParse(ReadOnlySpan<Char>, Single)

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

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

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

Параметры

s
ReadOnlySpan<Char>

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

result
Single

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

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

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

Комментарии

В .NET Core 3.0 и более поздних версиях слишком большие значения округляются до PositiveInfinity или NegativeInfinity в соответствии со спецификацией IEEE 754. В предыдущих версиях, включая платформа .NET Framework, анализ значения, которое было слишком большим для представления, приводил к сбою.

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

TryParse(String, Single)

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

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

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

Параметры

s
String

Строка, представляющая преобразуемое число.

result
Single

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

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

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

Примеры

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

string value;
float number;

// Parse a floating-point value with a thousands separator.
value = "1,643.57";
if (Single.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 (Single.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);

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

// Parse a negative integer value.
value = "-168934617882109132";
if (Single.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);
// The example displays the following output:
//       1643.57
//       Unable to parse '$1,643.57'.
//       -164300
//       -1.689346E+17
// Parse a floating-point value with a thousands separator.
let value = "1,643.57"
match Single.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 Single.TryParse value with
| true, number ->
    printfn $"{number}"
| _ ->
    printfn $"Unable to parse '{value}'."

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

// Parse a negative integer value.
let value = "-168934617882109132"
match Single.TryParse value with
| true, number ->
    printfn $"{number}"
| _ ->
    printfn $"Unable to parse '{value}'."
// The example displays the following output:
//       1643.57
//       Unable to parse '$1,643.57'.
//       -164300
//       -1.689346E+17
Dim value As String
Dim number As Single

' Parse a floating-point value with a thousands separator.
value = "1,643.57"
If Single.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 Single.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 Single.TryParse(value, number)
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)
End If

' Parse a negative integer number.
value = "-168934617882109132"
If Single.TryParse(value, number)
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)
End If
' The example displays the following output:
'       1643.57
'       Unable to parse '$1,643.57'.
'       -1643000
'       -1.689346E+17

Комментарии

В .NET Core 3.0 и более поздних версиях слишком большие значения округляются до PositiveInfinity или NegativeInfinity в соответствии со спецификацией IEEE 754. В предыдущих версиях, включая платформа .NET Framework, анализ значения, которое было слишком большим для представления, приводил к сбою.

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

Параметр s может содержать PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol (при сравнении строк учитывается регистр) или строку в формате :

[ws] [знак] [целочисленные цифры,]целочисленные цифры[.[ fractional-digits]][e[sign]exponential-digits][ws]

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

Элемент Описание
ws Серия символов пробелов.
sign Знак отрицательного или положительного знака.
целочисленные цифры Ряд числовых символов в диапазоне от 0 до 9, определяющих интегральную часть числа. Целочисленные цифры могут отсутствовать при наличии дробных цифр.
, Символ разделителя групп, зависящий от языка и региональных параметров.
. Символ десятичной запятой для конкретного языка и региональных параметров.
дробные цифры Ряд числовых символов в диапазоне от 0 до 9, определяющих дробную часть числа.
E Символ e в верхнем или нижнем регистре, обозначающий экспоненциальную (экспоненциальную) нотацию.
экспоненциальные цифры Ряд числовых символов в диапазоне от 0 до 9, определяющих экспоненту.

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

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

Обычно при передаче методу Single.TryParse строки, созданной путем вызова Single.ToString метода, возвращается исходное Single значение. Однако из-за потери точности значения могут быть не равны.

Если s тип данных выходит за пределы диапазонаSingle, метод возвращает платформа .NET Framework false и .NET Core 2.2 и более ранних версий. В .NET Core 3.0 и более поздних версиях он возвращает значение Single.NegativeInfinity , если s меньше Single.MinValue , а Single.PositiveInfinity если s больше Single.MaxValue.

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

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

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

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single)

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

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

provider
IFormatProvider

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

result
Single

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

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

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

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

TryParse(String, IFormatProvider, Single)

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

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

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

Параметры

s
String

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

provider
IFormatProvider

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

result
Single

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

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

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

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

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

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

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

style
NumberStyles

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

provider
IFormatProvider

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

result
Single

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

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

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

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

TryParse(ReadOnlySpan<Byte>, Single)

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

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

result
Single

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

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

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

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

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

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

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

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

Параметры

s
ReadOnlySpan<Char>

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

style
NumberStyles

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

provider
IFormatProvider

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

result
Single

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

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

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

Комментарии

В .NET Core 3.0 и более поздних версиях значения, которые слишком велики для представления, округляются до PositiveInfinity или NegativeInfinity в соответствии со спецификацией IEEE 754. В предыдущих версиях, включая платформа .NET Framework, анализ значения, которое было слишком большим для представления, приводил к сбою.

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

TryParse(String, NumberStyles, IFormatProvider, Single)

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

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

public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result);
public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = System::Numerics::INumberBase<float>::TryParse;
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out float result);
public static bool TryParse (string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out float result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * single -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Single) As Boolean

Параметры

s
String

Строка, представляющая преобразуемое число.

style
NumberStyles

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

provider
IFormatProvider

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

result
Single

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

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

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

Исключения

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

-или-

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

Примеры

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

string value;
System.Globalization.NumberStyles style;
System.Globalization.CultureInfo culture;
float number;

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

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

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

value = "1 345,978";
if (Single.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// The example displays the following output:
//       Converted '£1,097.63' to 1097.63.
//       Converted '1345,978' to 1345.978.
//       Converted '1.345,978' to 1345.978.
//       Unable to convert '1 345,978'.
// Parse currency value using en-GB culture.
let value = "£1,097.63"
let style = System.Globalization.NumberStyles.Number ||| System.Globalization.NumberStyles.AllowCurrencySymbol
let culture = System.Globalization.CultureInfo.CreateSpecificCulture "en-GB"
match Single.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."

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

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

let value = "1 345,978"
match Single.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."
// The example displays the following output:
//       Converted '£1,097.63' to 1097.63.
//       Converted '1345,978' to 1345.978.
//       Converted '1.345,978' to 1345.978.
//       Unable to convert '1 345,978'.
Dim value As String
Dim style As System.Globalization.NumberStyles
Dim culture As System.Globalization.CultureInfo
Dim number As Single

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

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

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

value = "1 345,978"
If Single.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If
' The example displays the following output:
'       Converted '£1,097.63' to 1097.63.
'       Converted '1345,978' to 1345.978.
'       Converted '1.345,978' to 1345.978.
'       Unable to convert '1 345,978'.

Комментарии

В .NET Core 3.0 и более поздних версиях значения, которые слишком велики для представления, округляются до PositiveInfinity или NegativeInfinity в соответствии со спецификацией IEEE 754. В предыдущих версиях, включая платформа .NET Framework, анализ значения, которое было слишком большим для представления, приводил к сбою.

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

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

Параметр s может содержать PositiveInfinitySymbol, NegativeInfinitySymbolдля языка и NaNSymbol региональных параметров, указанных параметром provider. Кроме того, в зависимости от значения styles параметр может включать следующие элементы:

[ws] [$] [sign] [целочисленные цифры,]целочисленные цифры[.fractional-digits][e[sign]exponential-digits][ws]

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

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

Примечание

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

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

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

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

  • Вы можете передать CultureInfo объект , представляющий язык и региональные параметры, предоставляющие сведения о форматировании. Его GetFormat метод возвращает NumberFormatInfo объект , предоставляющий числовые сведения о форматировании для этого языка и региональных параметров.

  • Вы можете передать фактический NumberFormatInfo объект, предоставляющий числовые сведения о форматировании. (Его реализация GetFormat просто возвращает себя.)

  • Можно передать пользовательский объект, реализующий IFormatProvider. Его GetFormat метод создает экземпляр и возвращает NumberFormatInfo объект , предоставляющий сведения о форматировании.

Если provider имеет значение null, форматирование s интерпретируется на NumberFormatInfo основе объекта текущего языка и региональных параметров.

Если s тип данных выходит за пределы диапазонаSingle, метод вызывает исключение OverflowException в платформа .NET Framework и .NET Core 2.2 и более ранних версиях. В .NET Core 3.0 и более поздних версиях он возвращает значение Single.NegativeInfinity , если s меньше Single.MinValue , а Single.PositiveInfinity если s больше Single.MaxValue.

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

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

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