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, IFormatProvider)

 

Data di pubblicazione: ottobre 2016

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.

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

public static double Parse(
	string s,
	NumberStyles style,
	IFormatProvider provider
)

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 è Float combinato con AllowThousands.

provider
Type: System.IFormatProvider

Oggetto che fornisce informazioni di formattazione specifiche delle impostazioni cultura relativamente a s.

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 valore numerico.

ArgumentException

style non è un valore di NumberStyles.

-oppure-

style è il valore di NumberStyles.AllowHexSpecifier.

OverflowException

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

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 NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, o NumberFormatInfo.NaNSymbol per impostazioni cultura specificate da provider. A seconda del valore di style, può anche richiedere il formato:

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

Elementi racchiusi 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 non 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 provider parametro è un IFormatProvider implementazione cui GetFormat metodo restituisce un NumberFormatInfo oggetto che fornisce informazioni specifiche delle impostazioni cultura utilizzate per interpretare il formato di s. È in genere, un NumberFormatInfo o CultureInfo oggetto. Se provider è null o NumberFormatInfo non è possibile ottenere, le informazioni di formattazione per la lingua corrente viene utilizzata.

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.

Nell'esempio seguente viene illustrato l'utilizzo del Parse(String, NumberStyles, IFormatProvider) metodo varie rappresentazioni di stringa dei valori di temperatura per assegnare un Temperature oggetto.

using System;
using System.Globalization;

public class Temperature
{
   // Parses the temperature from a string. Temperature scale is 
   // indicated by 'F (for Fahrenheit) or 'C (for Celcius) at the end
   // of the string.
   public static Temperature Parse(string s, NumberStyles styles, 
                                   IFormatProvider provider)
   {                                    
      Temperature temp = new Temperature();

      if (s.TrimEnd(null).EndsWith("'F"))
      {
         temp.Value = Double.Parse(s.Remove(s.LastIndexOf((char)39), 2), 
                                   styles, provider);
      }
      else
      {
         if (s.TrimEnd(null).EndsWith("'C"))
            temp.Celsius = Double.Parse(s.Remove(s.LastIndexOf((char)39), 2), 
                                        styles, provider);
         else
            temp.Value = Double.Parse(s, styles, provider);         
      }
      return temp;      
   } 

   // Declare private constructor so Temperature so only Parse method can
   // create a new instance
   private Temperature()   {}

   protected double m_value;

   public double Value 
   {
      get { return m_value; }
      private set { m_value = value; }
   }

   public double Celsius
   {
      get { return (m_value - 32) / 1.8; }
      private set { m_value = value * 1.8 + 32; }
   }

   public double Fahrenheit
   {
      get {return m_value; }
   }      
}

public class TestTemperature
{
   public static void Main()
   {
      string value;
      NumberStyles styles;
      IFormatProvider provider;
      Temperature temp;

      value = "25,3'C";
      styles = NumberStyles.Float;
      provider = CultureInfo.CreateSpecificCulture("fr-FR");
      temp = Temperature.Parse(value, styles, provider);
      Console.WriteLine("{0} degrees Fahrenheit equals {1} degrees Celsius.", 
                        temp.Fahrenheit, temp.Celsius);

      value = " (40) 'C";
      styles = NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite 
               | NumberStyles.AllowParentheses;
      provider = NumberFormatInfo.InvariantInfo;
      temp = Temperature.Parse(value, styles, provider);
      Console.WriteLine("{0} degrees Fahrenheit equals {1} degrees Celsius.", 
                        temp.Fahrenheit, temp.Celsius);

      value = "5,778E03'C";      // Approximate surface temperature of the Sun
      styles = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands |
               NumberStyles.AllowExponent;
      provider = CultureInfo.CreateSpecificCulture("en-GB"); 
      temp = Temperature.Parse(value, styles, provider);
      Console.WriteLine("{0} degrees Fahrenheit equals {1} degrees Celsius.", 
                        temp.Fahrenheit.ToString("N"), temp.Celsius.ToString("N"));
   }
}

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: