Exportieren (0) Drucken
Alle erweitern
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, IFormatProvider)

Konvertiert die Zeichenfolgendarstellung einer Zahl in einem bestimmten kulturabhängigen Format in die entsprechende Gleitkommazahl mit doppelter Genauigkeit.

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

public static double Parse(
	string s,
	IFormatProvider provider
)

Parameter

s
Typ: System.String
Eine Zeichenfolge, die die zu konvertierende Zahl enthält.
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 keine Zahl in einem gültigen Format dar.

OverflowException

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

Diese Überladung der Parse(String, IFormatProvider)-Methode wird normalerweise zum Konvertieren von Text verwendet, der auf unterschiedliche Arten als Double-Wert formatiert werden kann. Hiermit kann z. B. der von einem Benutzer eingegebene Text in einem HTML-Textfeld in einen numerischen Wert konvertiert werden.

Der s-Parameter wird mit einer Kombination aus dem NumberStyles.Float-Flag und dem NumberStyles.AllowThousands-Flag interpretiert. Der s-Parameter kann NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol oder NumberFormatInfo.NaNSymbol für die von provider angegebene Kultur oder eine Zeichenfolge im folgenden Format enthalten:

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

Optionale Elemente sind in eckigen Klammern ([ und ]) eingeschlossen. Elemente, die den Begriff "Ziffern" enthalten, bestehen aus einer Folge von numerischen Zeichen zwischen 0 und 9.

Element

Beschreibung

LR

Eine Folge von Leerraumzeichen.

sign

Ein Minuszeichen (-) oder ein Pluszeichen (+).

Ganzzahl-Ziffern

Eine Reihe von Ziffern von 0 (null) bis 9, die den ganzzahligen Teil der Zahl angeben. Folgen von Ganzzahl-Ziffern können durch Gruppentrennzeichen unterteilt werden. In manchen Kulturen werden Tausendergruppen z. B. durch ein Komma (,) getrennt. Das Ganzzahl-Ziffern-Element kann fehlen, wenn die Zeichenfolge das Bruchziffern-Element enthält.

.

Ein kulturabhängiges Dezimaltrennzeichen.

Bruchziffern

Eine Reihe von Ziffern von 0 (null) bis 9, die den Bruchteil der Zahl angeben.

E

Das Zeichen "e" oder "E", das angibt, dass der Wert in Exponentialschreibweise (wissenschaftlicher Schreibweise) dargestellt wird.

Exponenten-Ziffern

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

Weitere Informationen zu numerischen Formaten finden Sie im Thema Formatierung von Typen.

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 der Ereignishandler für das Click-Ereignis eines Web Forms veranschaulicht. Es wird das von der HttpRequest.UserLanguages-Eigenschaft zurückgegebene Array verwendet, um das Gebietsschema des Benutzers zu bestimmen. Danach wird ein CultureInfo-Objekt instanziiert, das diesem Gebietsschema entspricht. Das zu diesem CultureInfo-Objekt gehörende NumberFormatInfo-Objekt wird dann an die Parse(String, IFormatProvider)-Methode übergeben, um die Benutzereingabe in einen Double-Wert zu konvertieren.


protected void OkToDouble_Click(object sender, EventArgs e)
{
   string locale;
   double number;
   CultureInfo culture;

   // Return if string is empty
   if (String.IsNullOrEmpty(this.inputNumber.Text))
      return;

   // Get locale of web request to determine possible format of number
   if (Request.UserLanguages.Length == 0)
      return;
   locale = Request.UserLanguages[0];
   if (String.IsNullOrEmpty(locale))
      return;

  // Instantiate CultureInfo object for the user's locale
   culture = new CultureInfo(locale);

   // Convert user input from a string to a number
   try
   {
      number = Double.Parse(this.inputNumber.Text, culture.NumberFormat);
   }
   catch (FormatException)
   {
      return;
   }
   catch (Exception)
   {
      return;
   }
   // Output number to label on web form
   this.outputNumber.Text = "Number is " + number.ToString();
}


.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
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2015 Microsoft