War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Parse-Methode (String, NumberStyles, IFormatProvider)
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

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

Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und einem kulturabhängigen 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
Typ: System.String
Eine Zeichenfolge, die die zu konvertierende Zahl enthält.
style
Typ: 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
Typ: System.IFormatProvider
Ein Objekt, das kulturspezifische Formatierungsinformationen über s bereitstellt.

Rückgabewert

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

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

Der style-Parameter definiert die Stilelemente (wie Leerraum, Tausendertrennzeichen und Währungssymbole), die im s-Parameter zulässig sind, damit der Analysevorgang ordnungsgemäß ausgeführt werden kann. Hierbei muss es sich um eine Kombination von Bitflags aus der NumberStyles-Enumeration handeln. Die folgenden NumberStyles-Member werden nicht unterstützt:

Der s-Parameter kann NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol oder NumberFormatInfo.NaNSymbol für die von provider angegebene Kultur enthalten. Je nach dem Wert von style kann er auch das folgende Format aufweisen:

[LR] [$] [Vorzeichen][Ganzzahl-Ziffern,]Ganzzahl-Ziffern[.[Bruchziffern]][E[Vorzeichen]Exponenten-Ziffern][LR]

Elemente in eckigen Klammern ([ und ]) sind optional. In der folgenden Tabelle werden die einzelnen Elemente beschrieben.

Element

Beschreibung

LR

Eine Folge von Leerraumzeichen. Leerraum kann am Anfang von s stehen, wenn style das NumberStyles.AllowLeadingWhite-Flag enthält. Leeraum kann auch am Ende von s enthalten sein, wenn style das NumberStyles.AllowTrailingWhite-Flag enthält.

$

Ein kulturspezifisches Währungssymbol. Seine Position in der Zeichenfolge wird von der NumberFormatInfo.CurrencyNegativePattern-Eigenschaft und der NumberFormatInfo.CurrencyPositivePattern-Eigenschaft der aktuellen Kultur bestimmt. Das Währungssymbol der aktuellen Kultur kann in s angezeigt werden, wenn style das NumberStyles.AllowCurrencySymbol-Flag enthält.

sign

Ein Minuszeichen (-) oder ein Pluszeichen (+). Das Vorzeichen kann am Anfang von s stehen, wenn style das NumberStyles.AllowLeadingSign-Flag enthält. Das Vorzeichen kann auch am Ende von s enthalten sein, wenn style das NumberStyles.AllowTrailingSign-Flag enthält. Klammern können in s verwendet werden, um einen negativen Wert anzugeben, wenn style das NumberStyles.AllowParentheses-Flag enthält.

Ganzzahl-Ziffern

Eine Reihe von Ziffern von 0 (null) bis 9, die den ganzzahligen Teil der Zahl angeben. Das Ganzzahl-Ziffern-Element kann fehlen, wenn die Zeichenfolge das Bruchziffern-Element enthält.

,

Ein kulturspezifisches Gruppentrennzeichen. Das Gruppentrennzeichen der aktuellen Kultur kann in s angezeigt werden, wenn style das NumberStyles.AllowThousands-Flag enthält.

.

Ein kulturabhängiges Dezimaltrennzeichen. Das Dezimaltrennzeichen der aktuellen Kultur kann in s angezeigt werden, wenn style das NumberStyles.AllowDecimalPoint-Flag enthält.

Bruchziffern

Eine Reihe von Ziffern von 0 (null) bis 9, die den Bruchteil der Zahl angeben. Bruchziffern können in s angezeigt werden, wenn style das NumberStyles.AllowDecimalPoint-Flag enthält.

E

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

Exponenten-Ziffern

Eine Reihe von Ziffern von 0 (null) bis 9, die einen Exponenten angeben.

Eine Zeichenfolge, die ausschließlich Ziffern enthält (dies entspricht dem NumberStyles.None-Stil), wird immer erfolgreich analysiert. Die übrigen System.Globalization.NumberStyles-Member steuern Elemente, die nicht unbedingt in der Eingabezeichenfolge enthalten sein müssen. In der folgenden Tabelle wird angegeben, wie sich einzelne NumberStyles-Flags auf die Elemente auswirken, die in s vorhanden sein können.

NumberStyles-Wert

Elemente, die neben Ziffern in s zulässig sind

None

Nur das Ganzzahl-Ziffern-Element.

AllowDecimalPoint

Die Elemente Dezimaltrennzeichen (,) und Bruchstellen.

AllowExponent

Das Zeichen "e" oder "E", das die Exponentialschreibweise angibt. Dieses Flag allein unterstützt Werte im Format ZiffernEZiffern. Zum erfolgreichen Analysieren von Zeichenfolgen mit Elementen wie positiven und negativen Vorzeichen und Dezimaltrennzeichen sind weitere Flags erforderlich.

AllowLeadingWhite

Das LR-Element am Anfang von s.

AllowTrailingWhite

Das LR-Element am Ende von s.

AllowLeadingSign

Das Vorzeichen-Element am Anfang von s.

AllowTrailingSign

Das Vorzeichen-Element am Ende von s.

AllowParentheses

Das Vorzeichen-Element in Form von Klammern, die den numerischen Wert einschließen.

AllowThousands

Das Tausendertrennzeichen-Element (.).

AllowCurrencySymbol

Das Währungselement ($).

Currency

Alle Elemente. s kann aber keine Hexadezimalzahlen oder Zahlen in Exponentialschreibweise darstellen.

Float

Das LR-Element am Anfang oder am Ende von s, Vorzeichen am Anfang von s und das Dezimaltrennzeichen (.) Für den s-Parameter kann auch die Exponentialschreibweise verwendet werden.

Number

Die Elemente ws, sign, Tausendertrennzeichen (,) und Dezimaltrennzeichen (.).

Any

Alle Elemente. s kann jedoch keine Hexadezimalzahl darstellen.

Der provider-Parameter ist eine IFormatProvider-Implementierung, deren GetFormat-Methode ein NumberFormatInfo-Objekt zurückgibt, das kulturspezifische Informationen zum Interpretieren des Formats von s bereitstellt. Typischerweise handelt es sich um ein NumberFormatInfo-Objekt oder um ein CultureInfo-Objekt. Wenn providernull ist oder keine NumberFormatInfo-Klasse abgerufen werden kann, werden die Formatierungsinformationen für die aktuelle Systemkultur verwendet.

Wenn Sie der Double.Parse-Methode eine Zeichenfolge übergeben, die durch den Aufruf der Double.ToString-Methode erstellt wird, wird normalerweise der ursprüngliche Double-Wert zurückgegeben. Wegen eines Genauigkeitsverlusts sind die Werte jedoch möglicherweise nicht gleich. Wenn Sie versuchen, die Zeichenfolgendarstellung von MinValue oder MaxValue zu analysieren, wird darüber hinaus eine OverflowException ausgelöst, 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 während eines Analysevorgangs im s-Parameter ein Trennzeichen gefunden wird und die Dezimal- und Gruppentrennzeichen für Währungs- und Zahlenangaben identisch sind, dann wertet der Analysevorgang das Trennzeichen als Dezimaltrennzeichen und nicht als Gruppentrennzeichen. Weitere Informationen über Trennzeichen finden Sie unter CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator und NumberGroupSeparator.

Im folgenden Beispiel wird veranschaulicht, wie mit der Parse(String, NumberStyles, IFormatProvider)-Methode einem Temperature-Objekt verschiedene Zeichenfolgendarstellungen von Temperaturwerten zugewiesen werden.


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


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft