Double.TryParse Метод

Определение

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

Перегрузки

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

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

TryParse(String, Double)

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

TryParse(ReadOnlySpan<Char>, Double)

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

TryParse(String, NumberStyles, IFormatProvider, Double)

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

Комментарии

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

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

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

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

Параметры

s
ReadOnlySpan<Char>

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

style
NumberStyles

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

provider
IFormatProvider

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

result
Double

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

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

Boolean

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

Комментарии

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

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

TryParse(String, Double)

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

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

Параметры

s
String

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

result
Double

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

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

Boolean

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

Примеры

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

using System;

public class Example
{
   public static void Main()
   {
      string[] values = { "1,643.57", "$1,643.57", "-1.643e6",
                          "-168934617882109132", "123AE6",
                          null, String.Empty, "ABCDEF" };
      double number;

      foreach (var value in values) {
         if (Double.TryParse(value, out number))
            Console.WriteLine("'{0}' --> {1}", value, number);
         else
            Console.WriteLine("Unable to parse '{0}'.", value);
      }
   }
}
// The example displays the following output:
//       '1,643.57' --> 1643.57
//       Unable to parse '$1,643.57'.
//       '-1.643e6' --> -1643000
//       '-168934617882109132' --> -1.68934617882109E+17
//       Unable to parse '123AE6'.
//       Unable to parse ''.
//       Unable to parse ''.
//       Unable to parse 'ABCDEF'.
Module Example
   Public Sub Main()
      Dim values() As String = { "1,643.57", "$1,643.57", "-1.643e6", 
                                "-168934617882109132", "123AE6", 
                                Nothing, String.Empty, "ABCDEF" }
      Dim number As Double
      
      For Each value In values
         If Double.TryParse(value, number) Then
            Console.WriteLine("'{0}' --> {1}", value, number)
         Else
            Console.WriteLine("Unable to parse '{0}'.", value)      
         End If   
      Next   
   End Sub
End Module
' The example displays the following output:
'       '1,643.57' --> 1643.57
'       Unable to parse '$1,643.57'.
'       '-1.643e6' --> -1643000
'       '-168934617882109132' --> -1.68934617882109E+17
'       Unable to parse '123AE6'.
'       Unable to parse ''.
'       Unable to parse ''.
'       Unable to parse 'ABCDEF'.

Комментарии

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

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

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

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

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

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

Дополнительные сведения о числовых форматах см. в разделе Типы форматирования.

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

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

Обычно, если передать Double.TryParse методу строку, созданную путем вызова Double.ToString метода, Double возвращается исходное значение. Однако из-за потери точности значения могут не совпадать. Кроме того, попытка выполнить синтаксический анализ строкового представления Double.MinValue или Double.MaxValue отказывается от приема-передачи. в платформа .NET Framework и .net Core 2,2 и предыдущих версиях он создает исключение OverflowException . В .NET Core 3,0 и более поздних версиях он возвращает Double.NegativeInfinity при попытке выполнить синтаксический анализ MinValue или Double.PositiveInfinity при попытке выполнить синтаксический анализ MaxValue . Ниже приведен пример.

using System;

public class Example
{
   public static void Main()
   {
      string value;
      double number;

      value = Double.MinValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);

      value = Double.MaxValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);
   }
}
// The example displays the following output:
//    -1.79769313486232E+308 is outside the range of the Double type.
//    1.79769313486232E+308 is outside the range of the Double type.
Module Example
   Public Sub Main()
      Dim value As String
      Dim number As Double
      
      value = Double.MinValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
      
      value = Double.MaxValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
   End Sub
End Module
' The example displays the following output:
'    -1.79769313486232E+308 is outside the range of the Double type.
'    1.79769313486232E+308 is outside the range of the Double type.

в платформа .NET Framework и .net Core 2,2 и более ранних версиях, если s выходит за пределы диапазона Double типа данных, TryParse(String, Double) метод создает исключение OverflowException .

В .NET Core 3,0 и более поздних версиях исключение не возникает, когда выходит s за пределы диапазона Double типа данных. В большинстве случаев TryParse(String, Double) метод вычисляет результат Double.PositiveInfinity или Double.NegativeInfinity . Однако существует небольшой набор значений, которые считаются ближе к максимальному или минимальному значению, Double чем положительная или отрицательная бесконечность. В таких случаях метод вычисляет результат Double.MaxValue или Double.MinValue .

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

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

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

TryParse(ReadOnlySpan<Char>, Double)

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

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

Параметры

s
ReadOnlySpan<Char>

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

result
Double

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

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

Boolean

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

Комментарии

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

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

TryParse(String, NumberStyles, IFormatProvider, Double)

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

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

Параметры

s
String

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

style
NumberStyles

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

provider
IFormatProvider

Интерфейс IFormatProvider предоставляет сведения о форматировании параметра s для соответствующего языка и региональных параметров.

result
Double

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

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

Boolean

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

Исключения

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

-или- style включает значение AllowHexSpecifier.

Примеры

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

string value;
NumberStyles style;
CultureInfo culture;
double number;

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

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

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

value = "1 345,978";
if (Double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Unable to convert '1 345,978'.
Dim value As String
Dim style As NumberStyles
Dim culture As CultureInfo
Dim number As Double

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

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

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

value = "1 345,978"
If Double.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays:
'       Unable to convert '1 345,978'.

Комментарии

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

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

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

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

Протокол [$] писать [целые числа,] целочисленные цифры [. дробные цифры] [e [знак] экспоненциальные цифры] [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 стилю) всегда анализируется успешно, если она находится в диапазоне Double типа. Остальные элементы System.Globalization.NumberStyles управляют элементами, которые могут быть, но не обязательно присутствовать во входной строке. В следующей таблице показано, как отдельные NumberStyles Флаги влияют на элементы, которые могут присутствовать в s .

Значение NumberStyles Элементы, разрешенные в s в дополнение к цифрам
None Только элемент с целыми цифрами .
AllowDecimalPoint Языковой элемент . и дробные разрядные элементы.
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 реализацией, например NumberFormatInfo CultureInfo объектом или. providerПараметр предоставляет сведения, зависящие от языка и региональных параметров, используемые при анализе. Если provider параметр имеет значение null или NumberFormatInfo объект не может быть получен, используется информация о форматировании для текущего языка и региональных параметров.

Преобразование завершается неудачей s , если параметр имеет null или не является числовым значением, provider параметр не возвращает NumberFormatInfo объект, или style параметр не является сочетанием битовых флагов из NumberStyles перечисления.

Обычно, если передать Double.TryParse методу строку, созданную путем вызова Double.ToString метода, Double возвращается исходное значение. Однако из-за потери точности значения могут не совпадать. Кроме того, попытка выполнить синтаксический анализ строкового представления Double.MinValue или Double.MaxValue отказывается от приема-передачи. в платформа .NET Framework и .net Core 2,2 и предыдущих версиях он создает исключение OverflowException . В .NET Core 3,0 и более поздних версиях он возвращает Double.NegativeInfinity при попытке выполнить синтаксический анализ MinValue или Double.PositiveInfinity при попытке выполнить синтаксический анализ MaxValue . Ниже приведен пример.

using System;

public class Example
{
   public static void Main()
   {
      string value;
      double number;

      value = Double.MinValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);

      value = Double.MaxValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);
   }
}
// The example displays the following output:
//    -1.79769313486232E+308 is outside the range of the Double type.
//    1.79769313486232E+308 is outside the range of the Double type.
Module Example
   Public Sub Main()
      Dim value As String
      Dim number As Double
      
      value = Double.MinValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
      
      value = Double.MaxValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
   End Sub
End Module
' The example displays the following output:
'    -1.79769313486232E+308 is outside the range of the Double type.
'    1.79769313486232E+308 is outside the range of the Double type.

в платформа .NET Framework и .net Core 2,2 и более ранних версиях, если s выходит за пределы диапазона Double типа данных, Double.TryParse(String, NumberStyles, IFormatProvider, Double) метод создает исключение OverflowException .

В .NET Core 3,0 и более поздних версиях исключение не возникает, когда выходит s за пределы диапазона Double типа данных. В большинстве случаев Double.TryParse(String, NumberStyles, IFormatProvider, Double) метод вычисляет результат Double.PositiveInfinity или Double.NegativeInfinity . Однако существует небольшой набор значений, которые считаются ближе к максимальному или минимальному значению, Double чем положительная или отрицательная бесконечность. В таких случаях метод вычисляет результат Double.MaxValue или Double.MinValue .

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

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

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