Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

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.

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifCompareTo(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 MethodeUnterstützt von XNA FrameworkCompareTo(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 MethodeUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifEquals(Double)Gibt einen Wert zurück, der angibt, ob diese Instanz und ein angegebenes Double-Objekt den gleichen Wert darstellen.
Öffentliche MethodeUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifEquals(Object)Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Überschreibt ValueType.Equals(Object).)
Geschützte MethodeUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifGetHashCodeGibt den Hashcode für diese Instanz zurück. (Überschreibt ValueType.GetHashCode().)
Öffentliche MethodeUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkGetTypeCodeGibt die TypeCode-Enumeration für den Werttyp Double zurück.
Öffentliche MethodeStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifIsInfinityGibt einen Wert zurück, der angibt, ob der Wert der angegebenen Zahl -unendlich oder +unendlich ist.
Öffentliche MethodeStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifIsNaNGibt einen Wert zurück, der angibt, ob die angegebene Zahl einen Wert ergibt, der keine Zahl ist ( NaN ).
Öffentliche MethodeStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifIsNegativeInfinityGibt einen Wert zurück, der angibt, ob der Wert der angegebenen Zahl -unendlich ist.
Öffentliche MethodeStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifIsPositiveInfinityGibt einen Wert zurück, der angibt, ob der Wert der angegebenen Zahl +unendlich ist.
Geschützte MethodeUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeStatischer MemberUnterstützt von XNA FrameworkParse(String)Konvertiert die Zeichenfolgendarstellung einer Zahl in die entsprechende Gleitkommazahl mit doppelter Genauigkeit.
Öffentliche MethodeStatischer MemberUnterstützt von XNA FrameworkParse(String, NumberStyles)Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Format in die entsprechende Gleitkommazahl mit doppelter Genauigkeit.
Öffentliche MethodeStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifParse(String, IFormatProvider)Konvertiert die Zeichenfolgendarstellung einer Zahl in einem bestimmten kulturabhängigen Format in die entsprechende Gleitkommazahl mit doppelter Genauigkeit.
Öffentliche MethodeStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifParse(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 MethodeUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifToString()Konvertiert den Wert dieser Instanz in die entsprechende Zeichenfolgendarstellung. (Überschreibt ValueType.ToString().)
Öffentliche MethodeUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifToString(IFormatProvider)Konvertiert den numerischen Wert dieser Instanz unter Berücksichtigung der angegebenen kulturabhängigen Formatierungsinformationen in die entsprechende Zeichenfolgendarstellung.
Öffentliche MethodeUnterstützt von XNA FrameworkToString(String)Konvertiert den numerischen Wert dieser Instanz in die entsprechende Zeichenfolgendarstellung unter Berücksichtigung des angegebenen Formats.
Öffentliche MethodeUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifToString(String, IFormatProvider)Konvertiert den numerischen Wert dieser Instanz unter Verwendung des angegebenen Formats und der angegebenen kulturabhängigen Formatierungsinformationen in die entsprechende Zeichenfolgendarstellung.
Öffentliche MethodeStatischer MemberTryParse(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 MethodeStatischer Member643eft0t.PortableClassLibrary(de-de,VS.100).gifTryParse(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

  NameBeschreibung
Öffentlicher OperatorStatischer MemberEqualityGibt einen Wert zurück, der angibt, ob zwei angegebene Double-Werte gleich sind.
Öffentlicher OperatorStatischer MemberGreaterThanGibt einen Wert zurück, der angibt, ob ein angegebener Double-Wert größer als ein anderer angegebener Double-Wert ist.
Öffentlicher OperatorStatischer MemberGreaterThanOrEqualGibt einen Wert zurück, der angibt, ob ein angegebener Double-Wert größer oder gleich einem anderen angegebenen Double-Wert ist.
Öffentlicher OperatorStatischer MemberInequalityGibt einen Wert zurück, der angibt, ob zwei angegebene Double-Werte ungleich sind.
Öffentlicher OperatorStatischer MemberLessThanGibt einen Wert zurück, der angibt, ob ein angegebener Double-Wert kleiner als ein anderer angegebener Double-Wert ist.
Öffentlicher OperatorStatischer MemberLessThanOrEqualGibt einen Wert zurück, der angibt, ob ein angegebener Double-Wert kleiner oder gleich einem anderen angegebenen Double-Wert ist.
Zum Seitenanfang

  NameBeschreibung
Öffentliches FeldStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifEpsilonStellt den kleinsten positiven Double-Wert dar, der größer als 0 (null) ist. Dieses Feld ist konstant.
Öffentliches FeldStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifMaxValueStellt den größtmöglichen Wert der Double-Struktur dar. Dieses Feld ist konstant.
Öffentliches FeldStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifMinValueStellt den kleinstmöglichen Wert eines Double dar. Dieses Feld ist konstant.
Öffentliches FeldStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifNaNStellt einen Wert dar, der keine Zahl ist (NaN). Dieses Feld ist konstant.
Öffentliches FeldStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifNegativeInfinityStellt minus unendlich dar. Dieses Feld ist konstant.
Öffentliches FeldStatischer MemberUnterstützt von XNA Framework643eft0t.PortableClassLibrary(de-de,VS.100).gifPositiveInfinityStellt plus unendlich dar. Dieses Feld ist konstant.
Zum Seitenanfang

  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToBooleanInfrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToBoolean.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToByteInfrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToByte.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToCharInfrastruktur. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToDateTimeInfrastruktur. Diese Konvertierung wird nicht unterstützt. Bei dem Versuch der Verwendung dieser Methode wird eine InvalidCastException ausgelöst.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToDecimalInfrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToDecimal.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToDoubleInfrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToDouble.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToInt16Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToInt16.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToInt32Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToInt32.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToInt64Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToInt64.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToSByteInfrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToSByte.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToSingleInfrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToSingle.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToTypeInfrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToType.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToUInt16Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToUInt16.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToUInt32Infrastruktur. Eine Beschreibung dieses Members finden Sie unter IConvertible.ToUInt32.
Explizite SchnittstellenimplementierungPrivate MethodeUnterstützt von XNA FrameworkIConvertible.ToUInt64Infrastruktur. 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.

WarnhinweisVorsicht

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.

Anzeigen: