Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Double.Parse (String, NumberStyles)

 

Data di pubblicazione: ottobre 2016

Converte la rappresentazione di stringa di un numero in uno stile specificato nel rispettivo numero a virgola mobile e precisione doppia equivalente.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

public static double Parse(
	string s,
	NumberStyles style
)

Parametri

s
Type: System.String

Stringa che contiene un numero da convertire.

style
Type: System.Globalization.NumberStyles

Combinazione bit per bit dei valori di enumerazione che indica gli elementi di stile che possono essere presenti in s. Un valore tipico da specificare è una combinazione di Float e AllowThousands.

Valore restituito

Type: System.Double

Numero a virgola mobile a precisione doppia equivalente al valore numerico o al simbolo specificato in s.

Exception Condition
ArgumentNullException

s è null.

FormatException

s non rappresenta un numero in formato valido.

OverflowException

L'oggetto s rappresenta un numero minore di MinValue o maggiore di MaxValue.

ArgumentException

style non è un valore di NumberStyles.

-oppure-

style include il valore di AllowHexSpecifier.

Il style parametro definisce gli elementi di stile (ad esempio gli spazi vuoti, migliaia separatori e i simboli di valuta) che sono consentiti nel s parametro per l'operazione di analisi abbia esito positivo. Deve essere una combinazione di flag di bit del NumberStyles enumerazione. Le operazioni seguenti NumberStyles membri non sono supportati:

Il s parametro può contenere le impostazioni cultura correnti NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, o NumberFormatInfo.NaNSymbol. A seconda del valore di style, può anche richiedere il formato:

[ws][$][sign][integral-digits[,]]integral-digits[. [cifre frazionarie]] [E [sign]cifre esponenziali] [ws]

Gli elementi tra parentesi quadre ([e]) sono facoltativi. Nella tabella seguente viene descritto ogni elemento.

Elemento

Descrizione

ws

Una serie di spazi vuoti. Gli spazi vuoti possono essere visualizzati all'inizio di s se style include il NumberStyles.AllowLeadingWhite flag e può apparire alla fine di s se style include il NumberStyles.AllowTrailingWhite flag.

$

Un simbolo di valuta delle impostazioni cultura specifiche. La posizione nella stringa è definita per il NumberFormatInfo.CurrencyNegativePattern e NumberFormatInfo.CurrencyPositivePattern delle impostazioni cultura correnti. Simbolo di valuta le impostazioni cultura correnti può apparire s se style include il NumberStyles.AllowCurrencySymbol flag.

segno

Simbolo di segno negativo (-) o un simbolo di segno positivo (+). Il segno può essere visualizzati 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. Le parentesi possono essere utilizzate s per indicare un valore negativo se style include il NumberStyles.AllowParentheses flag.

cifre integrali

Una serie di cifre comprese tra 0 e 9 che specificano la parte integrale del numero. Il cifre integrali elemento può essere assente se la stringa contiene la cifre frazionarie elemento.

,

Separatore di gruppi di impostazioni cultura specifiche. Simbolo di separatore di gruppo di impostazioni cultura correnti può apparire s se style include il NumberStyles.AllowThousands flag

.

Simbolo di separatore decimale delle impostazioni cultura specifiche. Simbolo di separatore decimale della lingua corrente può essere visualizzati s se style include il NumberStyles.AllowDecimalPoint flag.

cifre frazionarie

Una serie di cifre comprese tra 0 e 9 che specificano la parte frazionaria del numero. Cifre frazionarie possono essere visualizzati s se style include il NumberStyles.AllowDecimalPoint flag.

E

Il "e" o il carattere "E", che indica che il valore è rappresentato nella notazione esponenziale (scientifica). Il s parametro può rappresentare un numero in notazione esponenziale se style include il NumberStyles.AllowExponent flag.

cifre esponenziali.

Una serie di cifre comprese tra 0 e 9 che specificano un esponente.

Una stringa che contiene solo cifre (che corrisponde alla NumberStyles.None stile) viene sempre analizzata correttamente. Le restanti System.Globalization.NumberStyles membri controllano gli elementi che possono essere presenti, ma non deve essere presente, nella stringa di input. Nella tabella seguente indica come singoli NumberStyles flag interessano gli elementi che possono essere presenti in s.

Valore NumberStyles

Elementi consentiti in s oltre alle cifre

None

Il cifre integrali solo l'elemento.

AllowDecimalPoint

Il separatore decimale (.) e cifre frazionarie elementi.

AllowExponent

Il "e" o il carattere "E", che indica la notazione esponenziale. Il flag supporta valori nel formato cifreEcifre; altri flag necessari per analizzare correttamente stringhe con elementi quali segno positivo o negativo e simboli del separatore decimale.

AllowLeadingWhite

il ws elemento all'inizio di s.

AllowTrailingWhite

Il ws elemento alla fine di s.

AllowLeadingSign

Il sign elemento all'inizio di s.

AllowTrailingSign

Il sign elemento alla fine di s.

AllowParentheses

Il sign elemento sotto forma di parentesi che racchiudono il valore numerico.

AllowThousands

Migliaia elemento separatore (,).

AllowCurrencySymbol

Elemento valuta ($).

Currency

Tutti gli elementi. Tuttavia, s può rappresentare un numero esadecimale o un numero in notazione esponenziale.

Float

Il ws elemento all'inizio o alla fine di s, sign all'inizio del se il separatore decimale (.) simbolo. Il s parametro inoltre possibile utilizzare la notazione esponenziale.

Number

il ws, sign, migliaia separatore (,) e separatore decimale (.) elementi.

Any

Tutti gli elementi. Tuttavia, s può rappresentare un numero esadecimale.

Il s parametro viene analizzato utilizzando le informazioni di formattazione in un NumberFormatInfo oggetto inizializzato per la lingua corrente. Per altre informazioni, vedere CurrentInfo.

In genere, se si passa il Double.Parse metodo una stringa che viene creata chiamando il Double.ToString (metodo), originale Double viene restituito. Tuttavia, a causa di una perdita di precisione, i valori potrebbero non essere uguali. Inoltre, il tentativo di analizzare la rappresentazione di stringa di MinValue o MaxValue genera un OverflowException, come illustrato nell'esempio seguente.

   string value;

   value = Double.MinValue.ToString();
   try {
      Console.WriteLine(Double.Parse(value));
   }   
   catch (OverflowException) {
      Console.WriteLine("{0} is outside the range of the Double type.",
                        value);
   }

   value = Double.MaxValue.ToString();
   try {
      Console.WriteLine(Double.Parse(value));
   }
   catch (OverflowException) {
      Console.WriteLine("{0} is outside the range of the Double type.",
                        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.

Se viene rilevato un separatore nel s parametro durante un'operazione di analisi e la valuta applicabile o il numero decimale e separatori di gruppi sono uguali, l'operazione di analisi si presume che il separatore è un separatore decimale, anziché un separatore di gruppi. Per ulteriori informazioni sui separatori, vedere CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, e NumberGroupSeparator.

L'esempio seguente usa il Parse(String, NumberStyles) metodo per analizzare le rappresentazioni di stringa di Double i valori usando le impostazioni cultura en-US.

public static void Main()
{
   // Set current thread culture to en-US.
   Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");

   string value;
   NumberStyles styles;

   // Parse a string in exponential notation with only the AllowExponent flag. 
   value = "-1.063E-02";
   styles = NumberStyles.AllowExponent;
   ShowNumericValue(value, styles);

   // Parse a string in exponential notation
   // with the AllowExponent and Number flags.
   styles = NumberStyles.AllowExponent | NumberStyles.Number;
   ShowNumericValue(value, styles);

   // Parse a currency value with leading and trailing white space, and
   // white space after the U.S. currency symbol.
   value = " $ 6,164.3299  ";
   styles = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
   ShowNumericValue(value, styles);

   // Parse negative value with thousands separator and decimal.
   value = "(4,320.64)";
   styles = NumberStyles.AllowParentheses | NumberStyles.AllowTrailingSign |
            NumberStyles.Float; 
   ShowNumericValue(value, styles);

   styles = NumberStyles.AllowParentheses | NumberStyles.AllowTrailingSign |
            NumberStyles.Float | NumberStyles.AllowThousands;
   ShowNumericValue(value, styles);
}

private static void ShowNumericValue(string value, NumberStyles styles)
{
   double number;
   try
   {
      number = Double.Parse(value, styles);
      Console.WriteLine("Converted '{0}' using {1} to {2}.", 
                        value, styles.ToString(), number);
   }
   catch (FormatException)
   {
      Console.WriteLine("Unable to parse '{0}' with styles {1}.", 
                        value, styles.ToString());
   }
   Console.WriteLine();                           
}   
// The example displays the following output to the console:
//    Unable to parse '-1.063E-02' with styles AllowExponent.
//    
//    Converted '-1.063E-02' using AllowTrailingSign, AllowThousands, Float to -0.01063.
//    
//    Converted ' $ 6,164.3299  ' using Number, AllowCurrencySymbol to 6164.3299.
//    
//    Unable to parse '(4,320.64)' with styles AllowTrailingSign, AllowParentheses, Float.
//    
//    Converted '(4,320.64)' using AllowTrailingSign, AllowParentheses, AllowThousands, Float to -4320.64.   

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: