Double.TryParse Metodo

Definizione

Converte la rappresentazione di stringa di un numero nel rispettivo numero a virgola mobile a precisione doppia equivalente.Converts the string representation of a number to its double-precision floating-point number equivalent. Un valore restituito indica se la conversione è riuscita o meno.A return value indicates whether the conversion succeeded or failed.

Overload

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

Converte un intervallo di caratteri contenente la rappresentazione stringa di un numero in uno stile specificato e in un formato specifico delle impostazioni cultura nel numero a virgola mobile a precisione singola equivalente.Converts a character span containing the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. Un valore restituito indica se la conversione è riuscita o meno.A return value indicates whether the conversion succeeded or failed.

TryParse(String, Double)

Converte la rappresentazione di stringa di un numero nel rispettivo numero a virgola mobile a precisione doppia equivalente.Converts the string representation of a number to its double-precision floating-point number equivalent. Un valore restituito indica se la conversione è riuscita o meno.A return value indicates whether the conversion succeeded or failed.

TryParse(ReadOnlySpan<Char>, Double)

Converte la rappresentazione in forma di intervallo di un numero in uno stile e in un formato specifico delle impostazioni cultura specificati nel numero a virgola mobile e precisione doppia equivalente.Converts the span representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. Un valore restituito indica se la conversione è riuscita o meno.A return value indicates whether the conversion succeeded or failed.

TryParse(String, NumberStyles, IFormatProvider, Double)

Converte la rappresentazione di stringa di un numero in uno stile specificato e in un formato specifico delle impostazioni cultura nel numero a virgola mobile e precisione doppia equivalente.Converts the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. Un valore restituito indica se la conversione è riuscita o meno.A return value indicates whether the conversion succeeded or failed.

Commenti

In .NET Core 3,0 e versioni successive, i valori troppo grandi per essere rappresentati vengono arrotondati a PositiveInfinity o NegativeInfinity come richiesto dalla specifica IEEE 754.In .NET Core 3.0 and later, values that are too large to represent are rounded to PositiveInfinity or NegativeInfinity as required by the IEEE 754 specification. Nelle versioni precedenti, incluse .NET Framework, l'analisi di un valore troppo grande per rappresentare il risultato è un errore.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

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

Converte un intervallo di caratteri contenente la rappresentazione stringa di un numero in uno stile specificato e in un formato specifico delle impostazioni cultura nel numero a virgola mobile a precisione singola equivalente.Converts a character span containing the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. Un valore restituito indica se la conversione è riuscita o meno.A return value indicates whether the conversion succeeded or failed.

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

Parametri

s
ReadOnlySpan<Char>

Intervallo di caratteri di sola lettura che contiene il numero da convertire.A read-only character span that contains the number to convert.

style
NumberStyles

Combinazione bit per bit dei valori NumberStyles che indicano il formato consentito di s.A bitwise combination of NumberStyles values that indicates the permitted format of s. Un valore tipico da specificare è Float combinato con AllowThousands.A typical value to specify is Float combined with AllowThousands.

provider
IFormatProvider

Oggetto che fornisce informazioni di formattazione specifiche delle impostazioni cultura relativamente a s.An object that supplies culture-specific formatting information about s.

result
Double

Al termine di questo metodo e se la conversione ha esito positivo, contiene il numero a virgola mobile a precisione doppia equivalente al valore numerico o al simbolo contenuto in s.When this method returns and if the conversion succeeded, contains a double-precision floating-point number equivalent of the numeric value or symbol contained in s. In caso di conversione non riuscita, contiene zero.Contains zero if the conversion failed. La conversione non riesce se il parametro s è null, un intervallo di caratteri vuoto oppure non è un numero in un formato conforme a style.The conversion fails if the s parameter is null, an empty character span, or not a number in a format compliant with style. Se s è un numero valido minore di MinValue, result è NegativeInfinity.If s is a valid number less than MinValue, result is NegativeInfinity. Se s è un numero valido maggiore di MaxValue, result è PositiveInfinity.If s is a valid number greater than MaxValue, result is PositiveInfinity. Questo parametro viene passato non inizializzato. Qualsiasi valore fornito in origine in result verrà sovrascritto.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Restituisce

Boolean

true se s è stato convertito correttamente; in caso contrario, false.true if s was converted successfully; otherwise, false.

Commenti

In .NET Core 3,0 e versioni successive, i valori troppo grandi per essere rappresentati vengono arrotondati a PositiveInfinity o NegativeInfinity come richiesto dalla specifica IEEE 754.In .NET Core 3.0 and later, values that are too large to represent are rounded to PositiveInfinity or NegativeInfinity as required by the IEEE 754 specification. Nelle versioni precedenti, incluse .NET Framework, l'analisi di un valore troppo grande per rappresentare il risultato è un errore.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

Si applica a

TryParse(String, Double)

Converte la rappresentazione di stringa di un numero nel rispettivo numero a virgola mobile a precisione doppia equivalente.Converts the string representation of a number to its double-precision floating-point number equivalent. Un valore restituito indica se la conversione è riuscita o meno.A return value indicates whether the conversion succeeded or failed.

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

Parametri

s
String

Stringa che contiene un numero da convertire.A string containing a number to convert.

result
Double

Al momento della restituzione, questo metodo contiene il numero a virgola mobile a precisione doppia equivalente al parametro s, se la conversione ha esito positivo oppure zero se la conversione non riesce.When this method returns, contains the double-precision floating-point number equivalent of the s parameter, if the conversion succeeded, or zero if the conversion failed. La conversione non riesce se il parametro s è null o Empty o non è un numero in formato valido.The conversion fails if the s parameter is null or Empty or is not a number in a valid format. Non riesce neanche in .NET Framework e .NET Core 2.2 e versioni precedenti se s rappresenta un numero minore di MinValue o maggiore di MaxValue.It also fails on .NET Framework and .NET Core 2.2 and earlier versions if s represents a number less than MinValue or greater than MaxValue. Questo parametro viene passato non inizializzato. Qualsiasi valore fornito in origine in result verrà sovrascritto.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Restituisce

Boolean

true se s è stato convertito correttamente; in caso contrario, false.true if s was converted successfully; otherwise, false.

Esempio

Nell'esempio seguente viene usato il TryParse(String, Double) metodo per convertire in valori le rappresentazioni di stringa di valori numerici Double .The following example uses the TryParse(String, Double) method to convert the string representations of numeric values to Double values. Si presuppone che en-US siano le impostazioni cultura correnti.It assumes that en-US is the current culture.

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'.

Commenti

In .NET Core 3,0 e versioni successive, i valori troppo grandi per essere rappresentati vengono arrotondati a PositiveInfinity o NegativeInfinity come richiesto dalla specifica IEEE 754.In .NET Core 3.0 and later, values that are too large to represent are rounded to PositiveInfinity or NegativeInfinity as required by the IEEE 754 specification. Nelle versioni precedenti, incluse .NET Framework, l'analisi di un valore troppo grande per rappresentare il risultato è un errore.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

Questo overload è diverso dal Double.Parse(String) Metodo restituendo un valore booleano che indica se l'operazione di analisi ha avuto esito positivo anziché restituire il valore numerico analizzato.This overload differs from the Double.Parse(String) method by returning a Boolean value that indicates whether the parse operation succeeded instead of returning the parsed numeric value. Elimina la necessità di utilizzare la gestione delle eccezioni per verificare un oggetto FormatException nel caso in cui s non sia valido e non possa essere analizzato correttamente.It eliminates the need to use exception handling to test for a FormatException in the event that s is invalid and cannot be successfully parsed.

Il s parametro può contenere le impostazioni cultura correnti NumberFormatInfo.PositiveInfinitySymbol , NumberFormatInfo.NegativeInfinitySymbol , NumberFormatInfo.NaNSymbol (il confronto tra stringhe fa distinzione tra maiuscole e minuscole) o una stringa nel formato seguente:The s parameter can contain the current culture's NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, NumberFormatInfo.NaNSymbol (the string comparison is case-sensitive), or a string of the form:

WS Sign [integrali-cifre,] cifre integrali [. [ frazionarie-cifre]] [e [segno] esponenziale-cifre] [ws][ws][sign][integral-digits,]integral-digits[.[fractional-digits]][e[sign]exponential-digits][ws]

Gli elementi tra parentesi quadre sono facoltativi.Elements in square brackets are optional. La tabella seguente descrive i singoli elementi.The following table describes each element.

ElementoElement DescrizioneDescription
wsws Una serie di spazi vuoti.A series of white-space characters.
signsign Segno negativo o simbolo di segno positivo.A negative sign or positive sign symbol.
cifre integraliintegral-digits Serie di caratteri numerici compreso tra 0 e 9 che specificano la parte integrale del numero.A series of numeric characters ranging from 0 to 9 that specify the integral part of the number. Le cifre integrali possono essere assenti se sono presenti cifre frazionarie.Integral-digits can be absent if there are fractional-digits.
,, Simbolo di separatore di gruppo specifico delle impostazioni cultura.A culture-specific group separator symbol.
.. Simbolo di virgola decimale specifico delle impostazioni cultura.A culture-specific decimal point symbol.
cifre frazionariefractional-digits Serie di caratteri numerici compreso tra 0 e 9 che specificano la parte frazionaria del numero.A series of numeric characters ranging from 0 to 9 that specify the fractional part of the number.
EE Carattere maiuscolo o minuscolo "e" che indica la notazione esponenziale (scientifica).An uppercase or lowercase character 'e', that indicates exponential (scientific) notation.
cifre esponenzialiexponential-digits Una serie di caratteri numerici compreso tra 0 e 9 che specificano un esponente.A series of numeric characters ranging from 0 to 9 that specify an exponent.

Per ulteriori informazioni sui formati numerici, vedere formattazione di tipi.For more information about numeric formats, see Formatting Types.

Il s parametro viene interpretato utilizzando una combinazione dei NumberStyles.Float NumberStyles.AllowThousands flag e.The s parameter is interpreted by using a combination of the NumberStyles.Float and NumberStyles.AllowThousands flags. Ciò significa che gli spazi vuoti e i separatori di migliaia sono consentiti, ma i simboli di valuta non lo sono.This means that white space and thousands separators are allowed but currency symbols are not. Per definire in modo esplicito gli elementi, ad esempio simboli di valuta, separatori delle migliaia e spazi vuoti, che possono essere presenti in s , usare l' Double.TryParse(String, NumberStyles, IFormatProvider, Double) Overload del metodo.To explicitly define the elements (such as currency symbols, thousands separators, and white space) that can be present in s, use the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method overload.

Il s parametro viene analizzato utilizzando le informazioni di formattazione in un NumberFormatInfo oggetto inizializzato per le impostazioni cultura correnti del sistema.The s parameter is parsed using the formatting information in a NumberFormatInfo object that is initialized for the current system culture. Per altre informazioni, vedere NumberFormatInfo.CurrentInfo.For more information, see NumberFormatInfo.CurrentInfo. Per analizzare una stringa usando le informazioni di formattazione di altre impostazioni cultura specificate, usare l' Double.TryParse(String, NumberStyles, IFormatProvider, Double) Overload del metodo.To parse a string using the formatting information of some other specified culture, use the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method overload.

In genere, se si passa il Double.TryParse metodo a una stringa creata chiamando il Double.ToString metodo, Double viene restituito il valore originale.Ordinarily, if you pass the Double.TryParse method a string that is created by calling the Double.ToString method, the original Double value is returned. Tuttavia, a causa di una perdita di precisione, i valori potrebbero non essere uguali.However, because of a loss of precision, the values may not be equal. Inoltre, il tentativo di analizzare la rappresentazione di stringa di Double.MinValue o Double.MaxValue non riesce a eseguire il round trip.In addition, attempting to parse the string representation of either Double.MinValue or Double.MaxValue fails to round-trip. In .NET Framework e .NET Core 2,2 e versioni precedenti, viene generata un'eccezione OverflowException .On .NET Framework and .NET Core 2.2 and previous versions, it throws an OverflowException. In .NET Core 3,0 e versioni successive, restituisce Double.NegativeInfinity se si tenta di analizzare MinValue o Double.PositiveInfinity se si tenta di eseguire l'analisi MaxValue .On .NET Core 3.0 and later versions, it returns Double.NegativeInfinity if you attempt to parse MinValue or Double.PositiveInfinity if you attempt to parse MaxValue. Nell'esempio seguente viene illustrato questo concetto.The following example provides an illustration.

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.

In .NET Framework e .NET Core 2,2 e versioni precedenti, se non s è compreso nell'intervallo del Double tipo di dati, il TryParse(String, Double) metodo genera un'eccezione OverflowException .On .NET Framework and .NET Core 2.2 and earlier versions, if s is out of range of the Double data type, the TryParse(String, Double) method throws an OverflowException.

In .NET Core 3,0 e versioni successive non viene generata alcuna eccezione se non s è compreso nell'intervallo del Double tipo di dati.On .NET Core 3.0 and later versions, no exception is thrown when s is out of range of the Double data type. Nella maggior parte dei casi, il TryParse(String, Double) metodo calcola un risultato di Double.PositiveInfinity o Double.NegativeInfinity .In most cases, the TryParse(String, Double) method calculates a result of Double.PositiveInfinity or Double.NegativeInfinity. Tuttavia, esiste un piccolo set di valori considerati più prossimi ai valori massimi o minimi di Double rispetto all'infinito positivo o negativo.However, there is a small set of values that are considered to be closer to the maximum or minimum values of Double than to positive or negative infinity. In questi casi, il metodo calcola un risultato di Double.MaxValue o Double.MinValue .In those cases, the method calculates a result of Double.MaxValue or Double.MinValue.

Se viene rilevato un separatore nel s parametro durante un'operazione di analisi e i separatori decimali e di gruppo sono uguali, l'operazione di analisi presuppone che il separatore sia un separatore decimale anziché un separatore di gruppo.If a separator is encountered in the s parameter during a parse operation, and the decimal and group separators are the same, the parse operation assumes that the separator is a decimal separator rather than a group separator. Per ulteriori informazioni sui separatori, vedere CurrencyDecimalSeparator , NumberDecimalSeparator , CurrencyGroupSeparator e NumberGroupSeparator .For more information about separators, see CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, and NumberGroupSeparator.

Vedi anche

Si applica a

TryParse(ReadOnlySpan<Char>, Double)

Converte la rappresentazione in forma di intervallo di un numero in uno stile e in un formato specifico delle impostazioni cultura specificati nel numero a virgola mobile e precisione doppia equivalente.Converts the span representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. Un valore restituito indica se la conversione è riuscita o meno.A return value indicates whether the conversion succeeded or failed.

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

Parametri

s
ReadOnlySpan<Char>

Intervallo di caratteri che contiene la rappresentazione stringa del numero da convertire.A character span that contains the string representation of the number to convert.

result
Double

Al termine di questo metodo, contiene il numero a virgola mobile a precisione doppia equivalente al valore numerico o al simbolo contenuto nel parametro s, se la conversione ha esito positivo oppure zero se la conversione non riesce.When this method returns, contains the double-precision floating-point number equivalent of the numeric value or symbol contained in s parameter, if the conversion succeeded, or zero if the conversion failed. La conversione non viene eseguita se il parametro s è null o vuoto oppure è in un formato non conforme a style.The conversion fails if the s parameter is null or empty, or is not in a format compliant with style. La conversione ha esito negativo anche se style non è una combinazione valida di costanti enumerate NumberStyles.The conversion also fails if style is not a valid combination of NumberStyles enumerated constants. Se s è un numero valido minore di MinValue, result è NegativeInfinity.If s is a valid number less than MinValue, result is NegativeInfinity. Se s è un numero valido maggiore di MaxValue, result è PositiveInfinity.If s is a valid number greater than MaxValue, result is PositiveInfinity. Questo parametro viene passato non inizializzato. Qualsiasi valore fornito in origine in result verrà sovrascritto.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Restituisce

Boolean

true se s è stato convertito correttamente; in caso contrario, false.true if s was converted successfully; otherwise, false.

Commenti

In .NET Core 3,0 e versioni successive, i valori troppo grandi per essere rappresentati vengono arrotondati a PositiveInfinity o NegativeInfinity come richiesto dalla specifica IEEE 754.In .NET Core 3.0 and later, values that are too large to represent are rounded to PositiveInfinity or NegativeInfinity as required by the IEEE 754 specification. Nelle versioni precedenti, incluse .NET Framework, l'analisi di un valore troppo grande per rappresentare il risultato è un errore.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

Si applica a

TryParse(String, NumberStyles, IFormatProvider, Double)

Converte la rappresentazione di stringa di un numero in uno stile specificato e in un formato specifico delle impostazioni cultura nel numero a virgola mobile e precisione doppia equivalente.Converts the string representation of a number in a specified style and culture-specific format to its double-precision floating-point number equivalent. Un valore restituito indica se la conversione è riuscita o meno.A return value indicates whether the conversion succeeded or failed.

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

Parametri

s
String

Stringa che contiene un numero da convertire.A string containing a number to convert.

style
NumberStyles

Combinazione bit per bit dei valori NumberStyles che indicano il formato consentito di s.A bitwise combination of NumberStyles values that indicates the permitted format of s. Un valore tipico da specificare è Float combinato con AllowThousands.A typical value to specify is Float combined with AllowThousands.

provider
IFormatProvider

Oggetto IFormatProvider che fornisce informazioni di formattazione specifiche delle impostazioni cultura relative a s.An IFormatProvider that supplies culture-specific formatting information about s.

result
Double

Quando questo metodo viene restituito, contiene il numero a virgola mobile a precisione doppia equivalente al valore numerico o al simbolo contenuto in s, se la conversione ha esito positivo oppure zero se la conversione non riesce.When this method returns, contains a double-precision floating-point number equivalent of the numeric value or symbol contained in s, if the conversion succeeded, or zero if the conversion failed. La conversione non riesce se il parametro s è null o Empty oppure se non è in un formato conforme a style oppure se style non è una combinazione valida di costanti di enumerazione NumberStyles.The conversion fails if the s parameter is null or Empty or is not in a format compliant with style, or if style is not a valid combination of NumberStyles enumeration constants. Non riesce neanche in .NET Framework o .NET Core 2.2 e versioni precedenti se s rappresenta un numero minore di MinValue o maggiore di MaxValue.It also fails on .NET Framework or .NET Core 2.2 and earlier versions if s represents a number less than MinValue or greater than MaxValue. Questo parametro viene passato non inizializzato. Qualsiasi valore fornito in origine in result verrà sovrascritto.This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

Restituisce

Boolean

true se s è stato convertito correttamente; in caso contrario, false.true if s was converted successfully; otherwise, false.

Eccezioni

style non è un valore di NumberStyles.style is not a NumberStyles value.

-oppure--or- style include il valore di AllowHexSpecifier.style includes the AllowHexSpecifier value.

Esempio

Nell'esempio seguente viene illustrato l'uso del Double.TryParse(String, NumberStyles, IFormatProvider, Double) metodo per analizzare la rappresentazione di stringa di numeri con uno stile particolare e che vengono formattati usando le convenzioni di impostazioni cultura specifiche.The following example demonstrates the use of the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method to parse the string representation of numbers that have a particular style and are formatted using the conventions of a particular culture.

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'.

Commenti

In .NET Core 3,0 e versioni successive, i valori troppo grandi per essere rappresentati vengono arrotondati a PositiveInfinity o NegativeInfinity come richiesto dalla specifica IEEE 754.In .NET Core 3.0 and later, values that are too large to represent are rounded to PositiveInfinity or NegativeInfinity as required by the IEEE 754 specification. Nelle versioni precedenti, incluse .NET Framework, l'analisi di un valore troppo grande per rappresentare il risultato è un errore.In prior versions, including .NET Framework, parsing a value that was too large to represent resulted in failure.

Il metodo TryParse è simile al Parse(String, NumberStyles, IFormatProvider) metodo, con la differenza che questo metodo non genera un'eccezione se la conversione non riesce.The TryParse method is like the Parse(String, NumberStyles, IFormatProvider) method, except this method does not throw an exception if the conversion fails. Se la conversione ha esito positivo, il valore restituito è true e il result parametro viene impostato sul risultato della conversione.If the conversion succeeds, the return value is true and the result parameter is set to the outcome of the conversion. Se la conversione non riesce, il valore restituito è false e il result parametro è impostato su zero.If the conversion fails, the return value is false and the result parameter is set to zero. In questo modo si elimina la necessità di utilizzare la gestione delle eccezioni per verificare un oggetto FormatException nel caso in cui s non sia valido e non sia possibile analizzarlo correttamente.This eliminates the need to use exception handling to test for a FormatException in the event that s is invalid and cannot be successfully parsed.

Il style parametro definisce il formato consentito del s parametro affinché l'operazione di analisi abbia esito positivo.The style parameter defines the allowable format of the s parameter for the parse operation to succeed. Deve essere una combinazione di flag di bit dell' NumberStyles enumerazione.It must be a combination of bit flags from the NumberStyles enumeration. I NumberStyles membri seguenti non sono supportati:The following NumberStyles members are not supported:

Il s parametro può contenere NumberFormatInfo.PositiveInfinitySymbol , NumberFormatInfo.NegativeInfinitySymbol o NumberFormatInfo.NaNSymbol per le impostazioni cultura indicate da provider .The s parameter can contain NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, or NumberFormatInfo.NaNSymbol for the culture indicated by provider. Inoltre, a seconda del valore di style , il s parametro può includere gli elementi seguenti:In addition, depending on the value of style, the s parameter may include the following elements:

WS [$] Sign [cifre integrali,] cifre integrali [. frazionarie-cifre] [e [segno] cifre esponenziali] [ws][ws] [$] [sign][integral-digits,]integral-digits[.fractional-digits][e[sign]exponential-digits][ws]

Gli elementi tra parentesi quadre ([e]) sono facoltativi.Elements in square brackets ([ and ]) are optional. La tabella seguente descrive i singoli elementi.The following table describes each element.

ElementoElement DescrizioneDescription
wsws Spazi vuoti facoltativi.Optional white space. Gli spazi vuoti possono essere visualizzati all'inizio di s se style include il NumberStyles.AllowLeadingWhite flag.White space can appear at the beginning of s if style includes the NumberStyles.AllowLeadingWhite flag. Può comparire alla fine di s se style include il NumberStyles.AllowTrailingWhite flag.It can appear at the end of s if style includes the NumberStyles.AllowTrailingWhite flag.
$ Simbolo di valuta specifico delle impostazioni cultura.A culture-specific currency symbol. La posizione nella stringa è definita dalle NumberFormatInfo.CurrencyNegativePattern NumberFormatInfo.CurrencyPositivePattern proprietà o dell' NumberFormatInfo oggetto restituito dal IFormatProvider.GetFormat metodo del provider parametro.Its position in the string is defined by the NumberFormatInfo.CurrencyNegativePattern or NumberFormatInfo.CurrencyPositivePattern properties of the NumberFormatInfo object returned by the IFormatProvider.GetFormat method of the provider parameter. Il simbolo di valuta può essere visualizzato in s se style include il NumberStyles.AllowCurrencySymbol flag.The currency symbol can appear in s if style includes the NumberStyles.AllowCurrencySymbol flag.
signsign Segno facoltativo.An optional sign. Il segno può apparire all'inizio di s se style include il NumberStyles.AllowLeadingSign flag e può apparire alla fine di s se style include il NumberStyles.AllowTrailingSign flag.The sign can appear at the beginning of s if style includes the NumberStyles.AllowLeadingSign flag, and it can appear at the end of s if style includes the NumberStyles.AllowTrailingSign flag. Le parentesi possono essere utilizzate in s per indicare un valore negativo se style include il NumberStyles.AllowParentheses flag.Parentheses can be used in s to indicate a negative value if style includes the NumberStyles.AllowParentheses flag.
cifre integraliintegral-digits Serie di cifre comprese tra 0 e 9 che specificano la parte integrale del numero.A series of digits ranging from 0 to 9 that specify the integral part of the number. Le cifre integrali possono essere assenti se sono presenti cifre frazionarie.Integral-digits can be absent if there are fractional-digits.
,, Simbolo di separatore delle migliaia specifico delle impostazioni cultura.A culture-specific thousands separator symbol. Il simbolo di separatore delle migliaia delle impostazioni cultura correnti può essere visualizzato in s se style include il NumberStyles.AllowThousands flag.The current culture's thousands separator symbol can appear in s if style includes the NumberStyles.AllowThousands flag.
.. Simbolo di virgola decimale specifico delle impostazioni cultura.A culture-specific decimal point symbol. Il simbolo della virgola decimale delle impostazioni cultura correnti può essere visualizzato in s se style include il NumberStyles.AllowDecimalPoint flag.The current culture's decimal point symbol can appear in s if style includes the NumberStyles.AllowDecimalPoint flag.
cifre frazionariefractional-digits Serie di cifre comprese tra 0 e 9 che specificano la parte frazionaria del numero.A series of digits ranging from 0 to 9 that specify the fractional part of the number. Le cifre frazionarie possono essere visualizzate in s se style include il NumberStyles.AllowDecimalPoint flag.Fractional digits can appear in s if style includes the NumberStyles.AllowDecimalPoint flag.
ee Il carattere e o E, che indica che s può rappresentare un numero utilizzando la notazione esponenziale.The e or E character, which indicates that s can represent a number using exponential notation. Il s parametro può rappresentare un numero nella notazione esponenziale se style include il NumberStyles.AllowExponent flag.The s parameter can represent a number in exponential notation if style includes the NumberStyles.AllowExponent flag.
cifre esponenzialiexponential-digits Serie di cifre comprese tra 0 e 9 che specificano un esponente.A series of digits ranging from 0 to 9 that specify an exponent.

Nota

Qualsiasi carattere di terminazione NUL (U + 0000) in s viene ignorato dall'operazione di analisi, indipendentemente dal valore dell' style argomento.Any terminating NUL (U+0000) characters in s are ignored by the parsing operation, regardless of the value of the style argument.

Una stringa con solo cifre (che corrisponde allo NumberStyles.None stile) viene sempre analizzata correttamente se è nell'intervallo del Double tipo.A string with digits only (which corresponds to the NumberStyles.None style) always parses successfully if it is in the range of the Double type. I membri rimanenti System.Globalization.NumberStyles controllano gli elementi che possono essere ma non devono essere presenti nella stringa di input.The remaining System.Globalization.NumberStyles members control elements that may be but are not required to be present in the input string. Nella tabella seguente viene indicato il modo NumberStyles in cui i singoli flag influiscono sugli elementi che possono essere presenti in s .The following table indicates how individual NumberStyles flags affect the elements that may be present in s.

Valore NumberStylesNumberStyles value Elementi consentiti in s oltre a cifreElements permitted in s in addition to digits
None Solo l'elemento a cifre integrali .The integral-digits element only.
AllowDecimalPoint L'elemento language .The . e elementi con cifre frazionarie .and fractional-digits elements.
AllowExponent Il s parametro può anche usare la notazione esponenziale.The s parameter can also use exponential notation. Questo flag supporta a sua volta valori nelle cifre integrali e esponenziali dei form; sono necessari flag aggiuntivi per analizzare correttamente le stringhe in notazione esponenziale con elementi come segni positivi o negativi e simboli di virgola decimale.This flag by itself supports values in the form integral-digits E exponential-digits; additional flags are needed to successfully parse strings in exponential notation with such elements as positive or negative signs and decimal point symbols.
AllowLeadingWhite Elemento WS all'inizio di s .The ws element at the beginning of s.
AllowTrailingWhite Elemento WS alla fine di s .The ws element at the end of s.
AllowLeadingSign Elemento Sign all'inizio di s .The sign element at the beginning of s.
AllowTrailingSign Elemento Sign alla fine di s .The sign element at the end of s.
AllowParentheses Elemento del segno sotto forma di parentesi che racchiudono il valore numerico.The sign element in the form of parentheses enclosing the numeric value.
AllowThousands Elemento .The , element.
AllowCurrencySymbol $ Elemento.The $ element.
Currency Tutti.All. Il s parametro non può rappresentare un numero esadecimale o un numero in notazione esponenziale.The s parameter cannot represent a hexadecimal number or a number in exponential notation.
Float Elemento WS all'inizio o alla fine di s , Sign all'inizio di s e .The ws element at the beginning or end of s, sign at the beginning of s, and the . simbolo.symbol. Il s parametro può anche usare la notazione esponenziale.The s parameter can also use exponential notation.
Number Gli ws sign elementi separatore,, Miles (,) e separatore decimale (.).The ws, sign, thousands separator (,), and decimal point (.) elements.
Any Tutti gli stili, ad eccezione s di non possono rappresentare un numero esadecimale.All styles, except s cannot represent a hexadecimal number.

Il provider parametro è un' IFormatProvider implementazione, ad esempio un NumberFormatInfo CultureInfo oggetto o.The provider parameter is a IFormatProvider implementation, such as a NumberFormatInfo or CultureInfo object. Il provider parametro fornisce informazioni specifiche delle impostazioni cultura utilizzate nell'analisi.The provider parameter supplies culture-specific information used in parsing. Se provider è null o NumberFormatInfo non è possibile ottenere un oggetto, vengono utilizzate le informazioni sul formato per le impostazioni cultura correnti.If provider is null or a NumberFormatInfo object cannot be obtained, the format information for the current culture is used.

La conversione non riesce se il s parametro è null o non è un valore numerico, il provider parametro non restituisce un NumberFormatInfo oggetto o se il style parametro non è una combinazione di flag di bit dell' NumberStyles enumerazione.The conversion fails if the s parameter is null or not a numeric value, the provider parameter does not yield a NumberFormatInfo object, or the style parameter is not a combination of bit flags from the NumberStyles enumeration.

In genere, se si passa il Double.TryParse metodo a una stringa creata chiamando il Double.ToString metodo, Double viene restituito il valore originale.Ordinarily, if you pass the Double.TryParse method a string that is created by calling the Double.ToString method, the original Double value is returned. Tuttavia, a causa di una perdita di precisione, i valori potrebbero non essere uguali.However, because of a loss of precision, the values may not be equal. Inoltre, il tentativo di analizzare la rappresentazione di stringa di Double.MinValue o Double.MaxValue non riesce a eseguire il round trip.In addition, attempting to parse the string representation of either Double.MinValue or Double.MaxValue fails to round-trip. In .NET Framework e .NET Core 2,2 e versioni precedenti, viene generata un'eccezione OverflowException .On .NET Framework and .NET Core 2.2 and previous versions, it throws an OverflowException. In .NET Core 3,0 e versioni successive, restituisce Double.NegativeInfinity se si tenta di analizzare MinValue o Double.PositiveInfinity se si tenta di eseguire l'analisi MaxValue .On .NET Core 3.0 and later versions, it returns Double.NegativeInfinity if you attempt to parse MinValue or Double.PositiveInfinity if you attempt to parse MaxValue. Nell'esempio seguente viene illustrato questo concetto.The following example provides an illustration.

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.

In .NET Framework e .NET Core 2,2 e versioni precedenti, se non s è compreso nell'intervallo del Double tipo di dati, il Double.TryParse(String, NumberStyles, IFormatProvider, Double) metodo genera un'eccezione OverflowException .On .NET Framework and .NET Core 2.2 and earlier versions, if s is out of range of the Double data type, the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method throws an OverflowException.

In .NET Core 3,0 e versioni successive non viene generata alcuna eccezione se non s è compreso nell'intervallo del Double tipo di dati.On .NET Core 3.0 and later versions, no exception is thrown when s is out of range of the Double data type. Nella maggior parte dei casi, il Double.TryParse(String, NumberStyles, IFormatProvider, Double) metodo calcola un risultato di Double.PositiveInfinity o Double.NegativeInfinity .In most cases, the Double.TryParse(String, NumberStyles, IFormatProvider, Double) method calculates a result of Double.PositiveInfinity or Double.NegativeInfinity. Tuttavia, esiste un piccolo set di valori considerati più prossimi ai valori massimi o minimi di Double rispetto all'infinito positivo o negativo.However, there is a small set of values that are considered to be closer to the maximum or minimum values of Double than to positive or negative infinity. In questi casi, il metodo calcola un risultato di Double.MaxValue o Double.MinValue .In those cases, the method calculates a result of Double.MaxValue or Double.MinValue.

Se viene rilevato un separatore nel s parametro durante un'operazione di analisi e la valuta o il numero separatore decimale e di gruppo è identico, l'operazione di analisi presuppone che il separatore sia un separatore decimale anziché un separatore di gruppo.If a separator is encountered in the s parameter during a parse operation, and the applicable currency or number decimal and group separators are the same, the parse operation assumes that the separator is a decimal separator rather than a group separator. Per ulteriori informazioni sui separatori, vedere CurrencyDecimalSeparator , NumberDecimalSeparator , CurrencyGroupSeparator e NumberGroupSeparator .For more information about separators, see CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, and NumberGroupSeparator.

Vedi anche

Si applica a