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.ToString-Methode: (String, IFormatProvider)

 

Veröffentlicht: Oktober 2016

Konvertiert den numerischen Wert dieser Instanz unter Verwendung des angegebenen Formats und der angegebenen kulturabhängigen Formatierungsinformationen in die entsprechende Zeichenfolgendarstellung.

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

public string ToString(
	string format,
	IFormatProvider provider
)

Parameter

format
Type: System.String

Eine numerische Formatierungszeichenfolge.

provider
Type: System.IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen bereitstellt.

Rückgabewert

Type: System.String

Die Zeichenfolgendarstellung des Werts dieser Instanz entsprechend den Angaben von format und provider.

Die ToString(String, IFormatProvider) -Methode formatiert einen Double Wert in einem angegebenen Format einer angegebenen Kultur. Wenn Sie ein anderes Format oder eine Kultur angeben möchten, verwenden Sie die anderen Überladungen von der ToString -Methode wie folgt:

Format verwenden

Für die Kultur

Verwenden Sie die Überladung

Standardformat ("G")

Standardkultur (aktueller)

ToString()

Standardformat ("G")

Eine bestimmte Kultur

ToString(IFormatProvider)

Ein bestimmtes Format oder die Genauigkeit

Standardkultur (aktueller)

ToString(String)

Der Rückgabewert kann PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol, oder die angegebene Zeichenfolgendarstellung einer Zahl entsprechend den Angaben von format.

Die format Parameter kann eine beliebige gültige numerische Standardformatbezeichner außer D und X sowie eine beliebige Kombination von benutzerdefinierten Zahlenformatbezeichner sein. Wenn format ist null oder eine leere Zeichenfolge ist, der Rückgabewert für diese Instanz mit dem allgemeinen numerische Formatbezeichner ("G") formatiert ist.

.NET Framework bietet eine umfangreiche formatierungsunterstützung, dies wird in den folgenden Themen zur Formatierung ausführlicher beschrieben:

Die provider Parameter ist ein IFormatProvider Implementierung, deren GetFormat Methode gibt ein NumberFormatInfo Objekt. In der Regel provider ist ein CultureInfo Objekt oder ein NumberFormatInfo Objekt. Die provider Parameter liefert kulturspezifische Informationen, die bei der Formatierung verwendete. Wenn provider ist null, der Rückgabewert wird mit formatiert die NumberFormatInfo Objekt für die aktuelle Kultur.

Standardmäßig enthält der Rückgabewert nur 15 Dezimalstellen, obwohl intern ein Maximum von 17 Ziffern gespeichert wird. Wenn der Wert dieser Instanz mehr als 15 Stellen ToString gibt PositiveInfinitySymbol oder NegativeInfinitySymbol anstelle der erwarteten Anzahl. Wenn Sie eine höhere Genauigkeit benötigen, geben Sie format mit der "G17" Format-Spezifikation, die immer 17 Ziffern Genauigkeit oder "R" zurückgibt, wobei 15 Ziffern zurückgegeben, wenn die Anzahl mit weiterhin Genauigkeit bzw. 17 Ziffern dargestellt werden kann, wenn die Zahl nur mit einer maximalen Genauigkeit dargestellt werden kann.

Hinweise für Aufrufer:

In einigen Fällen werden Double-Werte, die mit der Standardformatzeichenfolge für Zahlen "R" formatiert sind, nicht erfolgreich zurückkonvertiert, wenn sie mit dem /platform:x64- oder dem /platform:anycpu-Parameter kompiliert wurden und auf 64-Bit-Systemen ausgeführt werden. Um dieses Problem zu umgehen, formatieren Sie Double-Werte mit der Standardformatzeichenfolge für Zahlen "G17". Im folgenden Beispiel wird die Formatzeichenfolge "R" mit einem Double-Wert verwendet, der nicht erfolgreich zurückkonvertiert wird, und es wird die Formatzeichenfolge "G17" verwendet, um erfolgreich in den ursprünglichen Wert zurückzukonvertieren.

using System;
using System.Globalization;

public class Example
{
   static void Main(string[] args)
   {
      Console.WriteLine("Attempting to round-trip a Double with 'R':");
      double initialValue = 0.6822871999174;
      string valueString = initialValue.ToString("R",
                                                 CultureInfo.InvariantCulture);
      double roundTripped = double.Parse(valueString,
                                         CultureInfo.InvariantCulture);
      Console.WriteLine("{0:R} = {1:R}: {2}\n",
                        initialValue, roundTripped, initialValue.Equals(roundTripped));

      Console.WriteLine("Attempting to round-trip a Double with 'G17':");
      string valueString17 = initialValue.ToString("G17",
                                                   CultureInfo.InvariantCulture);
      double roundTripped17 = double.Parse(valueString17,
                                           CultureInfo.InvariantCulture);
      Console.WriteLine("{0:R} = {1:R}: {2}\n",
                        initialValue, roundTripped17, initialValue.Equals(roundTripped17));
   }
}
// If compiled to an application that targets anycpu or x64 and run on an x64 system,
// the example displays the following output:
//       Attempting to round-trip a Double with 'R':
//       0.6822871999174 = 0.68228719991740006: False
//
//       Attempting to round-trip a Double with 'G17':
//       0.6822871999174 = 0.6822871999174: True

Das folgende Beispiel zeigt eine Double -Wert mit den einzelnen unterstützten numerischen Standardformatbezeichnern für verschiedene Kulturen.

double value = 16325.62901;
string specifier;
CultureInfo culture;

// Use standard numeric format specifiers.
specifier = "G";
culture = CultureInfo.CreateSpecificCulture("eu-ES");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    16325,62901
Console.WriteLine(value.ToString(specifier, CultureInfo.InvariantCulture));
// Displays:    16325.62901

specifier = "C";
culture = CultureInfo.CreateSpecificCulture("en-US");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    $16,325.63
culture = CultureInfo.CreateSpecificCulture("en-GB");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    £16,325.63

specifier = "E04";
culture = CultureInfo.CreateSpecificCulture("sv-SE");
Console.WriteLine(value.ToString(specifier, culture));
// Displays: 1,6326E+004   
 culture = CultureInfo.CreateSpecificCulture("en-NZ");
 Console.WriteLine(value.ToString(specifier, culture));
// Displays:    1.6326E+004   

specifier = "F";
culture = CultureInfo.CreateSpecificCulture("fr-FR");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    16325,63
culture = CultureInfo.CreateSpecificCulture("en-CA");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    16325.63

specifier = "N";
culture = CultureInfo.CreateSpecificCulture("es-ES");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    16.325,63
culture = CultureInfo.CreateSpecificCulture("fr-CA");
Console.WriteLine(value.ToString(specifier, culture));
// Displays:    16 325,63

specifier = "P";
culture = CultureInfo.InvariantCulture;
Console.WriteLine((value/10000).ToString(specifier, culture));
// Displays:    163.26 %
culture = CultureInfo.CreateSpecificCulture("ar-EG");
Console.WriteLine((value/10000).ToString(specifier, culture));
// Displays:    163.256 %

Das folgende Beispiel veranschaulicht die Verwendung von ToStringunter Berücksichtigung einer String und ein IFormatProvider als Parameter.

public class Temperature : IFormattable {
	// IFormattable.ToString implementation.
	public string ToString(string format, IFormatProvider provider) {
		if( format != null ) {
			if( format.Equals("F") ) {
				return String.Format("{0}'F", this.Value.ToString());
			}
			if( format.Equals("C") ) {
				return String.Format("{0}'C", this.Celsius.ToString());
			}
		}

		return m_value.ToString(format, provider);
	}

	// The value holder
	protected double m_value;

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

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

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: