Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Double-Struktur

Stellt eine Gleitkommazahl mit doppelter Genauigkeit dar.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public struct Double : IComparable, IFormattable, 
	IConvertible, IComparable<double>, IEquatable<double>

Der Double-Typ macht die folgenden Member verfügbar.

  Name Beschreibung
Öffentliche Methode Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif CompareTo(Double) Vergleicht diese Instanz mit einer angegebenen Gleitkommazahl mit doppelter Genauigkeit und gibt eine ganze Zahl zurück, die angibt, ob der Wert dieser Instanz kleiner oder größer als der Wert der angegebenen Gleitkommazahl mit doppelter Genauigkeit ist oder mit dieser übereinstimmt.
Öffentliche Methode Unterstützt von XNA Framework CompareTo(Object) Vergleicht diese Instanz mit einem angegebenen Objekt und gibt eine ganze Zahl zurück, die angibt, ob der Wert dieser Instanz kleiner oder größer als der Wert des angegebenen Objekts ist oder mit diesem übereinstimmt.
Öffentliche Methode Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif Equals(Double) Gibt einen Wert zurück, der angibt, ob diese Instanz und ein angegebenes Double-Objekt den gleichen Wert darstellen.
Öffentliche Methode Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif Equals(Object) Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Überschreibt ValueType.Equals(Object).)
Geschützte Methode Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der automatische Speicherbereinigung freigegeben wird. (Von Object geerbt.)
Öffentliche Methode Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif GetHashCode Gibt den Hashcode für diese Instanz zurück. (Überschreibt ValueType.GetHashCode().)
Öffentliche Methode Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche Methode Unterstützt von XNA Framework GetTypeCode Gibt die TypeCode-Enumeration für den Werttyp Double zurück.
Öffentliche Methode Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif IsInfinity Gibt einen Wert zurück, der angibt, ob der Wert der angegebenen Zahl -unendlich oder +unendlich ist.
Öffentliche Methode Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif IsNaN Gibt einen Wert zurück, der angibt, ob die angegebene Zahl einen Wert ergibt, der keine Zahl ist ( NaN ).
Öffentliche Methode Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif IsNegativeInfinity Gibt einen Wert zurück, der angibt, ob der Wert der angegebenen Zahl -unendlich ist.
Öffentliche Methode Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif IsPositiveInfinity Gibt einen Wert zurück, der angibt, ob der Wert der angegebenen Zahl +unendlich ist.
Geschützte Methode Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche Methode Statischer Member Unterstützt von XNA Framework Parse(String) Konvertiert die Zeichenfolgendarstellung einer Zahl in die entsprechende Gleitkommazahl mit doppelter Genauigkeit.
Öffentliche Methode Statischer Member Unterstützt von XNA Framework Parse(String, NumberStyles) Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Format in die entsprechende Gleitkommazahl mit doppelter Genauigkeit.
Öffentliche Methode Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif Parse(String, IFormatProvider) Konvertiert die Zeichenfolgendarstellung einer Zahl in einem bestimmten kulturabhängigen Format in die entsprechende Gleitkommazahl mit doppelter Genauigkeit.
Öffentliche Methode Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif Parse(String, NumberStyles, IFormatProvider) Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und einem kulturabhängigen Format in die entsprechende Gleitkommazahl mit doppelter Genauigkeit.
Öffentliche Methode Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif ToString() Konvertiert den Wert dieser Instanz in die entsprechende Zeichenfolgendarstellung. (Überschreibt ValueType.ToString().)
Öffentliche Methode Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif ToString(IFormatProvider) Konvertiert den numerischen Wert dieser Instanz unter Berücksichtigung der angegebenen kulturabhängigen Formatierungsinformationen in die entsprechende Zeichenfolgendarstellung.
Öffentliche Methode Unterstützt von XNA Framework ToString(String) Konvertiert den numerischen Wert dieser Instanz in die entsprechende Zeichenfolgendarstellung unter Berücksichtigung des angegebenen Formats.
Öffentliche Methode Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif ToString(String, IFormatProvider) Konvertiert den numerischen Wert dieser Instanz unter Verwendung des angegebenen Formats und der angegebenen kulturabhängigen Formatierungsinformationen in die entsprechende Zeichenfolgendarstellung.
Öffentliche Methode Statischer Member TryParse(String, Double) Konvertiert die Zeichenfolgendarstellung einer Zahl in die entsprechende Gleitkommazahl mit doppelter Genauigkeit. Ein Rückgabewert gibt an, ob die Konvertierung erfolgreich war oder nicht.
Öffentliche Methode Statischer Member 643eft0t.PortableClassLibrary(de-de,VS.100).gif TryParse(String, NumberStyles, IFormatProvider, Double) Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und einem kulturabhängigen Format in die entsprechende Gleitkommazahl mit doppelter Genauigkeit. Ein Rückgabewert gibt an, ob die Konvertierung erfolgreich war oder nicht.
Zum Seitenanfang
  Name Beschreibung
Öffentlicher Operator Statischer Member Equality Gibt einen Wert zurück, der angibt, ob zwei angegebene Double-Werte gleich sind.
Öffentlicher Operator Statischer Member GreaterThan Gibt einen Wert zurück, der angibt, ob ein angegebener Double-Wert größer als ein anderer angegebener Double-Wert ist.
Öffentlicher Operator Statischer Member GreaterThanOrEqual Gibt einen Wert zurück, der angibt, ob ein angegebener Double-Wert größer oder gleich einem anderen angegebenen Double-Wert ist.
Öffentlicher Operator Statischer Member Inequality Gibt einen Wert zurück, der angibt, ob zwei angegebene Double-Werte ungleich sind.
Öffentlicher Operator Statischer Member LessThan Gibt einen Wert zurück, der angibt, ob ein angegebener Double-Wert kleiner als ein anderer angegebener Double-Wert ist.
Öffentlicher Operator Statischer Member LessThanOrEqual Gibt einen Wert zurück, der angibt, ob ein angegebener Double-Wert kleiner oder gleich einem anderen angegebenen Double-Wert ist.
Zum Seitenanfang
  Name Beschreibung
Öffentliches Feld Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif Epsilon Stellt den kleinsten positiven Double-Wert dar, der größer als 0 (null) ist. Dieses Feld ist konstant.
Öffentliches Feld Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif MaxValue Stellt den größtmöglichen Wert der Double-Struktur dar. Dieses Feld ist konstant.
Öffentliches Feld Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif MinValue Stellt den kleinstmöglichen Wert eines Double dar. Dieses Feld ist konstant.
Öffentliches Feld Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif NaN Stellt einen Wert dar, der keine Zahl ist (NaN). Dieses Feld ist konstant.
Öffentliches Feld Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif NegativeInfinity Stellt minus unendlich dar. Dieses Feld ist konstant.
Öffentliches Feld Statischer Member Unterstützt von XNA Framework 643eft0t.PortableClassLibrary(de-de,VS.100).gif PositiveInfinity Stellt plus unendlich dar. Dieses Feld ist konstant.
Zum Seitenanfang
  Name Beschreibung
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToBoolean Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToBoolean.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToByte Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToByte.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToChar Infrastruktur. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToDateTime Infrastruktur. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToDecimal Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToDecimal.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToDouble Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToDouble.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToInt16 Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToInt16.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToInt32 Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToInt32.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToInt64 Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToInt64.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToSByte Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToSByte.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToSingle Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToSingle.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToType Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToType.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToUInt16 Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToUInt16.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToUInt32 Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToUInt32.
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IConvertible.ToUInt64 Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToUInt64.
Zum Seitenanfang

Der Werttyp Double stellt eine 64-Bit-Zahl doppelter Genauigkeit mit Werten von -1,79769313486232e308 bis +1,79769313486232e308 dar. Zum Wertebereich gehören weiterhin eine positive und eine negative 0 (null), PositiveInfinity, NegativeInfinity und NaN (Not-a-Number, NaN).

Double entspricht der Norm IEC 60559:1989 (IEEE 754) für binäre Gleitkomma-Arithmetik.

Double stellt Methoden zum Vergleichen von Instanzen dieses Typs, zum Konvertieren des Werts einer Instanz in die entsprechende Zeichenfolgendarstellung und zum Konvertieren der Zeichenfolgenentsprechung einer Zahl in eine Instanz dieses Typs bereit. Informationen über die Steuerung der Zeichenfolgenentsprechung von Werttypen mit Codes für die Formatangabe finden Sie unter Formatierung von Typen, Standardmäßige Zahlenformatzeichenfolgen und Benutzerdefinierte Zahlenformatzeichenfolgen.

Verwenden von Gleitkommazahlen

Wenn bei einer binären Operation einer der Operanden ein Double ist, muss der andere Operand ein ganzzahliger Typ oder ein Gleitkommatyp sein (Double oder Single). Wenn der andere Operand kein Double ist, wird er vor Ausführung der Operation in Double konvertiert, und bei Ausführung der Operation werden mindestens der Wertebereich und die Genauigkeit von Double verwendet. Wenn das Ergebnis der Operation numerisch ist, ist der Ergebnistyp Double.

Gleitkommaoperatoren einschließlich des Zuweisungsoperators lösen keine Ausnahmen aus. Stattdessen ist, wie unten beschrieben, das Ergebnis einer Gleitkommaoperation in Ausnahmefällen 0 (null), unendlich oder NaN:

  • Wenn der Betrag des Ergebnisses einer Gleitkommaoperation für das Zielformat zu klein ist, ist das Ergebnis der Operation 0 (null).

  • Wenn der Betrag des Ergebnisses einer Gleitkommaoperation zu groß für das Zielformat ist, ist das Ergebnis der Operation je nach Vorzeichen des Ergebnisses entweder PositiveInfinity oder NegativeInfinity.

  • Wenn eine Gleitkommaoperation ungültig ist, ist das Ergebnis der Operation NaN.

  • Wenn mindestens einer der Operanden einer Gleitkommaoperation NaN ist, ist das Ergebnis der Operation NaN.

Gleitkommawerte und Verlust an Genauigkeit

Beachten Sie, dass eine Gleitkommazahl nur ein Näherungswert einer Dezimalzahl ist und dass die Genauigkeit einer Gleitkommazahl bestimmt, wie genau die Zahl mit einer Dezimalzahl übereinstimmt. In der Standardeinstellung hat der Double-Wert nur eine Genauigkeit von 15 Ziffern, obwohl intern maximal 17 gültige Ziffern bestimmt werden. Die Genauigkeit einer Gleitkommazahl hat mehrere Auswirkungen:

  • Zwei Gleitkommazahlen, die bei einer bestimmten Genauigkeit als gleich gelten, können bei einer anderen Genauigkeit als ungleich gelten, da sich die letzten signifikanten Ziffern unterscheiden.

  • Eine mathematische oder Vergleichsoperation, bei der eine Gleitkommazahl verwendet wird, führt möglicherweise nicht zu demselben Ergebnis wie bei der Verwendung einer Dezimalzahl, da die Gleitkommazahl eventuell nur ein Näherungswert der Dezimalzahl ist.

  • Bei Verwendung einer Gleitkommazahl könnte ein Wert möglicherweise nicht wiederhergestellt werden. Ein Wert gilt als wiederhergestellt, wenn er in einer Operation in ein anderes Format und anschließend in einer Umkehroperation wieder zu einer Gleitkommazahl konvertiert wird, wobei die resultierende Gleitkommazahl mit der ursprünglichen Gleitkommazahl übereinstimmt. Die Wiederherstellung könnte fehlschlagen, wenn ein oder mehr niederstwertige Ziffern bei einer Konvertierung verloren gehen oder geändert werden.

Außerdem kann sich das Ergebnis von arithmetischen Vorgängen und Zuweisungsvorgängen mit Double-Werten bei unterschiedlichen Plattformen wegen des Verlusts an Genauigkeit für den Double-Typ unterscheiden. Das Ergebnis der Zuweisung eines literalen Double-Werts kann sich z. B. in der 32-Bit- und der 64-Bit-Version von .NET Framework unterscheiden. Im folgenden Beispiel wird dieser Unterschied veranschaulicht, wenn einer Double-Variable der literale Wert -4.42330604244772E-305 und eine Variable, deren Wert -4.42330604244772E-305 ist, zugewiesen werden. Beachten Sie, dass das Ergebnis der Parse(String)-Methode in diesem Fall keinem Genauigkeitsverlust unterliegt.


double value = -4.42330604244772E-305;

double fromLiteral = -4.42330604244772E-305;
double fromVariable = value;
double fromParse = Double.Parse("-4.42330604244772E-305");

Console.WriteLine("Double value from literal: {0,29:R}", fromLiteral);
Console.WriteLine("Double value from variable: {0,28:R}", fromVariable);
Console.WriteLine("Double value from Parse method: {0,24:R}", fromParse);      
// On 32-bit versions of the .NET Framework, the output is:
//    Double value from literal:        -4.42330604244772E-305
//    Double value from variable:       -4.42330604244772E-305
//    Double value from Parse method:   -4.42330604244772E-305
//
// On other versions of the .NET Framework, the output is:
//    Double value from literal:      -4.4233060424477198E-305
//    Double value from variable:     -4.4233060424477198E-305
//    Double value from Parse method:   -4.42330604244772E-305      


Das folgende Codebeispiel veranschaulicht die Verwendung von Double:


	/// <summary>
	/// Temperature class stores the value as Double
	/// and delegates most of the functionality 
	/// to the Double implementation.
	/// </summary>
	public class Temperature : IComparable, IFormattable {
		/// <summary>
		/// IComparable.CompareTo implementation.
		/// </summary>
		public int CompareTo(object obj) {
			if(obj is Temperature) {
				Temperature temp = (Temperature) obj;

				return m_value.CompareTo(temp.m_value);
			}
			
			throw new ArgumentException("object is not a Temperature");	
		}

		/// <summary>
		/// IFormattable.ToString implementation.
		/// </summary>
		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);
		}

		/// <summary>
		/// Parses the temperature from a string in form
		/// [ws][sign]digits['F|'C][ws]
		/// </summary>
		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('\''), 2), styles, provider);
			}
			else if( s.TrimEnd(null).EndsWith("'C") ) {
				temp.Celsius = Double.Parse( s.Remove(s.LastIndexOf('\''), 2), styles, provider);
			}
			else {
				temp.Value = Double.Parse(s, styles, provider);
			}

			return temp;
		}

		// 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;
			}
		}
	}


.NET Framework

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

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Unterstützt in:

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

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

Alle Member dieses Typs sind threadsicher. Member, die scheinbar den Zustand einer Instanz ändern, geben in Wirklichkeit eine neue Instanz zurück, die mit dem neuen Wert initialisiert wurde. Wie bei allen anderen Typen müssen Lese- und Schreibzugriffe auf eine freigegebene Variable, die eine Instanz dieses Typs enthält, durch eine Sperre geschützt werden, um die Threadsicherheit zu gewährleisten.

Warnhinweis Vorsicht

Die Zuweisung einer Instanz dieses Typs ist nicht auf allen Hardwareplattformen threadsicher, da die binäre Darstellung der Instanz u. U. zu groß ist, sodass die Zuweisung nicht in einem einzelnen atomaren Vorgang abgeschlossen werden kann.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ
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?