Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Double.Parse-Methode: (String, NumberStyles, IFormatProvider)

 

Veröffentlicht: Oktober 2016

Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und einem kulturspezifischen Format in die entsprechende Gleitkommazahl mit doppelter Genauigkeit.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

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

Parameter

s
Type: System.String

Eine Zeichenfolge, die eine zu konvertierende Zahl enthält.

style
Type: System.Globalization.NumberStyles

Eine bitweise Kombination von Enumerationswerten, die die Stilelemente angeben, die in s vorhanden sein können. Ein häufig angegebener Wert ist Float in Kombination mit AllowThousands.

provider
Type: System.IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu s bereitstellt.

Rückgabewert

Type: System.Double

Eine Gleitkommazahl mit doppelter Genauigkeit, die dem numerischen Wert oder Symbol in s entspricht.

Exception Condition
ArgumentNullException

s ist null.

FormatException

s stellt keinen numerischen Wert dar.

ArgumentException

style ist kein NumberStyles-Wert.

- oder -

style ist der NumberStyles.AllowHexSpecifier-Wert.

OverflowException

s stellt eine Zahl dar, die kleiner als MinValue oder größer als MaxValue ist.

Die style Parameter definiert, die die Stilelemente (z. B. Leerzeichen, Tausende Trennzeichen und Währungssymbole), sind zulässig, der s Parameter, damit der Analysevorgang erfolgreich ausgeführt werden kann. Es muss eine Kombination von Bitflags aus der NumberStyles Enumeration. Die folgenden NumberStyles Elemente werden nicht unterstützt:

Die s kann Parameter enthalten NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, oder NumberFormatInfo.NaNSymbol für die durch den angegebenen Kultur provider. Abhängig vom Wert style, dauert auch die Form:

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

Elemente müssen in eckigen Klammern ([und]) sind optional. In der folgenden Tabelle wird jedes Element beschrieben.

Element

Beschreibung

ws

Eine Reihe von Leerzeichen. Leerzeichen am Anfang stehen s Wenn style enthält die NumberStyles.AllowLeadingWhite Flag kann angezeigt werden, am Ende der s Wenn style enthält die NumberStyles.AllowTrailingWhite Flag.

$

Eine kulturspezifische Währungssymbol. Seine Position in der Zeichenfolge wird definiert, durch die NumberFormatInfo.CurrencyNegativePattern und NumberFormatInfo.CurrencyPositivePattern Eigenschaften der aktuellen Kultur. Das Währungssymbol der aktuellen Kultur stehen s Wenn style enthält die NumberStyles.AllowCurrencySymbol Flag.

Vorzeichen

Ein Minuszeichen (-) oder ein Pluszeichen (+). Die Zeichen am Anfang stehen s Wenn style enthält die NumberStyles.AllowLeadingSign Flag kann angezeigt werden, am Ende der s Wenn style enthält die NumberStyles.AllowTrailingSign Flag. Klammern können verwendet werden, s zum Angeben eines negativen Werts Wenn style enthält die NumberStyles.AllowParentheses Flag.

ganzzahlige Ziffern

Eine Folge von Ziffern zwischen 0 und 9, die den ganzzahligen Teil der Zahl angeben. Die ganzzahligen Ziffern Element kann nicht vorhanden, wenn die Zeichenfolge enthält den Dezimalstellen Element.

,

Eine kulturspezifische Gruppentrennzeichen. In der aktuellen Kultur Gruppentrennzeichen angezeigt werden kann s Wenn style enthält die NumberStyles.AllowThousands Flag

.

Eine kulturspezifische Dezimaltrennzeichen. In der aktuellen Kultur Dezimaltrennzeichen angezeigt werden kann s Wenn style enthält die NumberStyles.AllowDecimalPoint Flag.

Dezimalstellen sind

Eine Folge von Ziffern zwischen 0 und 9, die die Nachkommastellen der Zahl angeben. Dezimalstellen erscheinen s Wenn style enthält die NumberStyles.AllowDecimalPoint Flag.

E

Das "e" oder die Zeichen "E", der angibt, dass der Wert in Exponentialschreibweise (wissenschaftlich) dargestellt wird. Die s Parameter kann eine Zahl in Exponentialschreibweise darstellen, wenn style enthält die NumberStyles.AllowExponent Flag.

exponentielle Ziffern

Eine Folge von Ziffern zwischen 0 bis 9, die einen Exponenten angeben.

Eine Zeichenfolge mit nur-Ziffern (entspricht der NumberStyles.None Stil) immer erfolgreich analysiert. Die verbleibenden System.Globalization.NumberStyles Member steuern Elemente, die möglicherweise vorhanden, jedoch sind nicht erforderlich, in der Eingabezeichenfolge vorhanden sein. In der folgenden Tabelle gibt an, wie einzelne NumberStyles Flags Auswirkungen auf die Elemente, die möglicherweise in vorhandene s.

NumberStyles-Wert

Elemente in zulässig s neben Ziffern

None

Die ganzzahligen Ziffern nur Element.

AllowDecimalPoint

Das Dezimaltrennzeichen (.) und Dezimalstellen Elemente.

AllowExponent

Das "e" oder "E"-Zeichen, das Exponentialschreibweise angibt. Dieses Flag allein unterstützt Werte im Formular ZiffernEZiffern; zusätzliche Flags sind erforderlich, um Zeichenfolgen mit Elementen wie positiven und negativen Vorzeichen und Dezimaltrennzeichen erfolgreich analysiert.

AllowLeadingWhite

Die ws Element am Anfang des s.

AllowTrailingWhite

Die ws Element am Ende der s.

AllowLeadingSign

Die Anmeldung Element am Anfang des s.

AllowTrailingSign

Die Anmeldung Element am Ende der s.

AllowParentheses

Die Anmeldung Element in Form von Klammern, die den numerischen Wert einschließen.

AllowThousands

Das 1000er-Trennzeichen-Element.

AllowCurrencySymbol

Das Element, Currency ($).

Currency

Alle Elemente. Allerdings s keine hexadezimale Zahl oder einer Zahl in Exponentialschreibweise darstellen.

Float

Die ws Element am Anfang oder Ende des s, Anmeldung am Anfang des s, und das Dezimaltrennzeichen (.) Symbol. Die s Parameter können auch Exponentialschreibweise.

Number

Die ws, sign, Tausender-Trennzeichen und Dezimaltrennzeichen (.) Elemente.

Any

Alle Elemente. Allerdings s eine hexadezimale Zahl nicht darstellen kann.

Die provider Parameter ist ein IFormatProvider Implementierung, deren GetFormat Methode gibt ein NumberFormatInfo Objekt, das kulturspezifische Informationen zum Interpretieren des Formats der bereitstellt s. Es ist normalerweise eine NumberFormatInfo oder CultureInfo Objekt. Wenn provider ist null oder ein NumberFormatInfo kann nicht abgerufen werden, die Formatierungsinformationen für die aktuelle Systemkultur verwendet wird.

Normalerweise, wenn Sie übergeben die Double.Parse Methode eine Zeichenfolge, die durch den Aufruf erstellt wird die Double.ToString -Methode, die ursprünglichen Double zurückgegebene Wert. Jedoch möglicherweise wegen einem Genauigkeitsverlust die Werte sein nicht gleich. Darüber hinaus versucht, die Zeichenfolgendarstellung eines analysieren MinValue oder MaxValue löst ein OverflowException, wie das folgende Beispiel veranschaulicht.

   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.

Wenn es eine Trennzeichen in kommt die s Parameter, während ein Analysevorgang und der geltenden Währung oder die Anzahl von Dezimalstellen und Gruppentrennzeichen stimmen überein, der Analysevorgang wird davon ausgegangen, dass das Trennzeichen ein Dezimaltrennzeichen und Gruppentrennzeichen ist. Weitere Informationen über Trennzeichen finden Sie unter CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, und NumberGroupSeparator.

Das folgende Beispiel veranschaulicht die Verwendung von der Parse(String, NumberStyles, IFormatProvider) Methode, um mehrere zeichenfolgendarstellungen Temperaturwerte zum Zuweisen einer Temperature Objekt.

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"));
   }
}

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: