Auf Englisch lesen

Freigeben über


Complex.Equals Methode

Definition

Gibt einen Wert zurück, der angibt, ob zwei komplexe Zahlen gleich sind.

Überlädt

Equals(Object)

Gibt einen Wert zurück, der angibt, ob die aktuelle Instanz und ein angegebenes Objekt über den gleichen Wert verfügen.

Equals(Complex)

Gibt einen Wert zurück, der angibt, ob die aktuelle Instanz und eine angegebene komplexe Zahl den gleichen Wert haben.

Equals(Object)

Quelle:
Complex.cs
Quelle:
Complex.cs
Quelle:
Complex.cs

Gibt einen Wert zurück, der angibt, ob die aktuelle Instanz und ein angegebenes Objekt über den gleichen Wert verfügen.

public override bool Equals (object obj);
public override bool Equals (object? obj);

Parameter

obj
Object

Das zu vergleichende Objekt.

Gibt zurück

true, wenn der obj-Parameter ein Complex-Objekt oder ein Typ ist, der die implizite Konvertierung in ein Complex-Objekt unterstützt, und der Wert gleich dem aktuellen Complex-Objekt ist, andernfalls false.

Hinweise

Zwei komplexe Zahlen sind gleich, wenn ihre realen Teile gleich und ihre imaginären Teile gleich sind. Die Equals(Object) -Methode entspricht dem folgenden Ausdruck:

return this.Real.Equals(((Complex) value).Real) &&
       this.Imaginary.Equals(((Complex) value).Imaginary);

Wenn der obj Parameter kein Complex -Objekt, sondern ein Datentyp ist, für den eine implizite Konvertierung definiert ist, konvertiert obj die Equals(Object) Methode in ein Complex Objekt, dessen realer Teil dem Wert von obj entspricht und dessen imaginäre Teil gleich 0 ist, bevor sie den Vergleich durchführt. Im folgenden Beispiel wird dies veranschaulicht, indem festgestellt wird, dass eine komplexe Zahl und ein Gleitkommawert mit doppelter Genauigkeit gleich sind.

double n1 = 16.33;
System.Numerics.Complex c1 =
       new System.Numerics.Complex(16.33, 0);
Console.WriteLine(c1.Equals(n1));               // Returns true.

Hinweise für Aufrufer

Verwenden Sie die Equals(Complex) Methode mit Vorsicht, da zwei scheinbar gleichwertige Werte aufgrund der unterschiedlichen Genauigkeit ihrer realen und imaginären Komponenten als ungleich gelten können. Das Problem kann akzentuiert werden, wenn obj vor dem Vergleich in ein Double konvertiert werden muss. Im folgenden Beispiel wird eine komplexe Zahl verglichen, deren reale Komponente mit diesem Wert gleich einem Single Wert Single zu sein scheint. Wie die Ausgabe zeigt, gibt der Vergleich für Gleichheit zurück False.

using System;
using System.Numerics;

public class Example
{
   public static void Main()
   {
      float n1 = 1.430718e-12f;
      Complex c1 = new Complex(1.430718e-12, 0);
      Console.WriteLine("{0} = {1}: {2}", c1, n1, c1.Equals(n1));
   }
}
// The example displays the following output:
//       (1.430718E-12, 0) = 1.430718E-12: False

Eine empfohlene Verfahren besteht darin, eine akzeptable Rand Unterschied zwischen den beiden Werten definieren (z. B. 01 % einer der Werte reellen und imaginären Komponenten) statt Vergleichen der Werte hinsichtlich ihrer Gleichheit. Wenn der absolute Wert der Differenz zwischen den beiden Werten kleiner oder gleich diesem Rand ist, ist die Differenz wahrscheinlich auf eine Differenz in der Genauigkeit zurückzuführen, und daher sind die Werte wahrscheinlich gleich. Im folgenden Beispiel wird diese Technik verwendet, um die beiden Werte zu vergleichen, die im vorherigen Codebeispiel als ungleich befunden wurden. Sie stellt nun fest, dass sie gleich sind.

using System.Numerics;

public class Example
{
   public static void Main()
   {
      float n1 = 1.430718e-12f;
      Complex c1 = new Complex(1.430718e-12, 0);
      double difference = .0001;

      // Compare the values
      bool result = (Math.Abs(c1.Real - n1) <= c1.Real * difference) &
                    c1.Imaginary == 0;
      Console.WriteLine("{0} = {1}: {2}", c1, n1, result);
   }
}
// The example displays the following output:
//       (1.430718E-12, 0) = 1.430718E-12: True

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Equals(Complex)

Quelle:
Complex.cs
Quelle:
Complex.cs
Quelle:
Complex.cs

Gibt einen Wert zurück, der angibt, ob die aktuelle Instanz und eine angegebene komplexe Zahl den gleichen Wert haben.

public bool Equals (System.Numerics.Complex value);

Parameter

value
Complex

Die zu vergleichende komplexe Zahl.

Gibt zurück

true, wenn die komplexe Zahl und value den gleichen Wert haben, andernfalls false.

Implementiert

Hinweise

Die Equals(Complex) -Methode stellt die IEquatable<T> Implementierung für die Struktur bereit Complex . Die Leistung ist etwas besser als Equals(Object) die Methode, da sie ihren Parameter nicht in eine komplexe Zahl konvertieren muss.

Zwei komplexe Zahlen sind gleich, wenn ihre realen Teile gleich und ihre imaginären Teile gleich sind. Die Equals(Complex) -Methode entspricht dem folgenden Ausdruck:

return this.Real.Equals(value) && this.Imaginary.Equals(value);

Hinweise für Aufrufer

Verwenden Sie die Equals(Complex) Methode mit Vorsicht, da zwei scheinbar gleichwertige Werte aufgrund der unterschiedlichen Genauigkeit ihrer realen und imaginären Komponenten als ungleich gelten können. Im folgenden Beispiel wird gemeldet, dass (3.33333, 0.142857) und (10/3, 1/7) nicht gleich sind.

System.Numerics.Complex c1 = new System.Numerics.Complex(3.33333, .142857);
System.Numerics.Complex c2 = new System.Numerics.Complex(10/3.0, 1.0/7);
Console.WriteLine("{0} = {1}: {2}", c1, c2, c1.Equals(c2));
// The example displays the following output:
//    (3.33333, 0.142857) = (3.33333333333333, 0.142857142857143): False

Eine empfohlene Verfahren besteht darin, eine akzeptable Rand Unterschied zwischen den beiden Werten definieren (z. B. 01 % einer der Werte reellen und imaginären Komponenten) statt Vergleichen der Werte hinsichtlich ihrer Gleichheit. Wenn der absolute Wert der Differenz zwischen den beiden Werten kleiner oder gleich diesem Rand ist, ist die Differenz wahrscheinlich auf eine Differenz in der Genauigkeit zurückzuführen, und daher sind die Werte wahrscheinlich gleich. Im folgenden Beispiel wird diese Technik verwendet, um die beiden komplexen Werte zu vergleichen, die im vorherigen Codebeispiel als ungleich befunden wurden. Es stellt fest, dass die beiden komplexen Zahlen gleich sind.

System.Numerics.Complex c1 = new System.Numerics.Complex(3.33333, .142857);
System.Numerics.Complex c2 = new System.Numerics.Complex(10/3.0, 1.0/7);
double difference = .0001;

// Compare the values
bool result = (Math.Abs(c1.Real - c2.Real) <= c1.Real * difference) &
              (Math.Abs(c1.Imaginary - c2.Imaginary) <= c1.Imaginary * difference);
Console.WriteLine("{0} = {1}: {2}", c1, c2, result);
// The example displays the following output:
//    (3.33333, 0.142857) = (3.33333333333333, 0.142857142857143): True

Weitere Informationen

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0