Complex.Equals Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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(System::Object ^ obj);
public override bool Equals (object obj);
public override bool Equals (object? obj);
override this.Equals : obj -> bool
Public Overrides Function Equals (obj As Object) As Boolean
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);
this.Real.Equals((value :?> Complex).Real)
&& this.Imaginary.Equals((value :?> Complex).Imaginary)
Return Me.Real.Equals(CType(value, Complex).Real) AndAlso
Me.Imaginary.Equals(CType(value, Complex).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.
let n1 = 16.33;
let c1 = System.Numerics.Complex(16.33, 0)
printfn $"{c1.Equals n1}" // Returns true.
Dim n1 As Double = 16.33
Dim c1 As 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
open System.Numerics
let n1 = 1.430718e-12f
let c1 = Complex(1.430718e-12, 0);
printfn $"{c1} = {n1}: {c1.Equals n1}"
// The example displays the following output:
// (1.430718E-12, 0) = 1.430718E-12: False
Imports System.Numerics
Module Example
Public Sub Main()
Dim n1 As Single = 1.430718e-12
Dim c1 As New Complex(1.430718e-12, 0)
Console.WriteLine("{0} = {1}: {2}", c1, n1, c1.Equals(n1))
End Sub
End Module
' 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
open System.Numerics
let n1 = 1.430718e-12f
let c1 = Complex(1.430718e-12, 0);
let difference = 0.0001f;
// Compare the values
let result = (abs (c1.Real - float n1) <= c1.Real * float difference) && c1.Imaginary = 0;
printfn $"{c1} = {n1}: {result}"
// The example displays the following output:
// (1.430718E-12, 0) = 1.430718E-12: True
Imports System.Numerics
Module Example
Public Sub Main()
Dim n1 As Single = 1.430718e-12
Dim c1 As New Complex(1.430718e-12, 0)
Dim difference As Double = .0001
' Compare the values
Dim result As Boolean = (Math.Abs(c1.Real - n1) <= c1.Real * difference) And
c1.Imaginary = 0
Console.WriteLine("{0} = {1}: {2}", c1, n1, result)
End Sub
End Module
' The example displays the following output:
' (1.430718E-12, 0) = 1.430718E-12: True
Gilt für:
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:
virtual bool Equals(System::Numerics::Complex value);
public bool Equals (System.Numerics.Complex value);
override this.Equals : System.Numerics.Complex -> bool
Public Function Equals (value As Complex) As Boolean
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);
this.Real.Equals value && this.Imaginary.Equals value
Return Me.Real.Equals(value.Real) AndAlso Me.Imaginary.Equals(value.Imaginary)
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
let c1 = System.Numerics.Complex(3.33333, 0.142857)
let c2 = System.Numerics.Complex(10. / 3., 1. / 7.)
printfn $"{c1} = {c2}: {c1.Equals c2}"
// The example displays the following output:
// (3.33333, 0.142857) = (3.33333333333333, 0.142857142857143): False
Dim c1 As New System.Numerics.Complex(3.33333, .142857)
Dim c2 As New System.Numerics.Complex(10/3, 1/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
let c1 = System.Numerics.Complex(3.33333, 0.142857)
let c2 = System.Numerics.Complex(10. / 3., 1. / 7.)
let difference = 0.0001
// Compare the values
let result =
(Math.Abs(c1.Real - c2.Real) <= c1.Real * difference)
&& (Math.Abs(c1.Imaginary - c2.Imaginary) <= c1.Imaginary * difference)
printfn $"{c1} = {c2}: {result}"
// The example displays the following output:
// (3.33333, 0.142857) = (3.33333333333333, 0.142857142857143): True
Dim c1 As New System.Numerics.Complex(3.33333, .142857)
Dim c2 As New System.Numerics.Complex(10/3.0, 1.0/7)
Dim difference As Double = .0001
' Compare the values
Dim result As Boolean = (Math.Abs(c1.Real - c2.Real) <= c1.Real * difference) And
(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