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
.
Исключения
Примеры
В следующем примере показано использование 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] [$] [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.
См. также раздел
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по