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


Single.TryParse Метод

Определение

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

Перегрузки

TryParse(String, IFormatProvider, Single)

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

TryParse(ReadOnlySpan<Char>, Single)

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

TryParse(String, Single)

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

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single)

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

TryParse(ReadOnlySpan<Char>, 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(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<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, если преобразование выполнено успешно или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если параметр snull или пуст или не является числом в допустимом формате. Если s является допустимым числом меньше Single.MinValue, resultNegativeInfinity. Если s является допустимым числом, превышающим Single.MaxValue, resultPositiveInfinity. Этот параметр передается неинициализирован; любое исходное значение, предоставленное в 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, если преобразование выполнено успешно или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если параметр snull или 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 Серия символов пробелов.
знак Отрицательный знак или положительный символ знака.
целочисленные цифры Ряд числовых символов, начиная от 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, метод возвращает false в .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.

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

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

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(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<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, если преобразование выполнено успешно или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если utf8TextEmpty или не имеет допустимого формата. Этот параметр передается неинициализирован; любое исходное значение, предоставленное в результате, будет перезаписан.

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

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

[ws] [$] [знак] [целочисленные цифры,]целочисленные цифры[.дробные цифры][знак]экспоненциальные цифры][ws]

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

Элемент Описание
ws Необязательный пробел. Пробел может отображаться в начале s, если style включает флаг NumberStyles.AllowLeadingWhite. Он может отображаться в конце s, если style включает флаг NumberStyles.AllowTrailingWhite.
$ Символ валюты, зависящий от языка и региональных параметров. Его положение в строке определяется свойствами NumberFormatInfo.CurrencyNegativePattern или NumberFormatInfo.CurrencyPositivePattern объекта NumberFormatInfo, возвращаемого методом IFormatProvider.GetFormat параметра provider. Символ валюты может отображаться в s, если style включает флаг NumberStyles.AllowCurrencySymbol.
знак Необязательный знак. Знак может появиться в начале 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 Элементы, разрешенные в s в дополнение к цифрам
None Только элемент целочисленных цифр .
AllowDecimalPoint . и дробные цифры элементов.
AllowExponent Параметр s также может использовать экспоненциальную нотацию. Этот флаг сам поддерживает значения в форме целозначные цифрыEэкспоненциальные цифры; Дополнительные флаги необходимы для успешного анализа строк в экспоненциальной нотации с такими элементами, как положительные или отрицательные знаки и символы десятичной запятой.
AllowLeadingWhite Элемент ws в начале s.
AllowTrailingWhite Элемент ws в конце s.
AllowLeadingSign Элемент знака в начале .
AllowTrailingSign Элемент знака в конце .
AllowParentheses Элемент знака в виде круглых скобок, включающей числовое значение.
AllowThousands Элемент ,.
AllowCurrencySymbol Элемент $.
Currency Все. Параметр s не может представлять шестнадцатеричное число или число в экспоненциальной нотации.
Float Элемент ws в начале или конце s, знак в начале sи . символ. Параметр s также может использовать экспоненциальную нотацию.
Number Элементы ws, sign, разделителя тысяч (,), и десятичной запятой (.) элементов.
Any Все стили, кроме s не могут представлять шестнадцатеричное число.

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

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

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

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

Если providernull, форматирование 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.

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

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