Complex.Equals Metoda

Definice

Vrátí hodnotu, která označuje, zda jsou dvě komplexní čísla rovna.

Přetížení

Equals(Object)

Vrátí hodnotu, která označuje, zda aktuální instance a zadaný objekt mají stejnou hodnotu.

Equals(Complex)

Vrátí hodnotu, která označuje, zda aktuální instance a zadané komplexní číslo mají stejnou hodnotu.

Equals(Object)

Zdroj:
Complex.cs
Zdroj:
Complex.cs
Zdroj:
Complex.cs

Vrátí hodnotu, která označuje, zda aktuální instance a zadaný objekt mají stejnou hodnotu.

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

Parametry

obj
Object

Objekt k porovnání

Návraty

true obj pokud je Complex parametr objektem nebo typem schopným implicitního převodu Complex na objekt a jeho hodnota se rovná aktuálnímu Complex objektu, falsev opačném případě hodnota .

Poznámky

Dvě komplexní čísla jsou rovna, pokud jsou jejich skutečné části rovny a jejich imaginární části jsou rovny. Metoda Equals(Object) je ekvivalentní následujícímu výrazu:

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

obj Pokud parametr není Complex objekt, ale jedná se o datový typ, pro který je definován implicitní převod, převede obj metoda na Complex objekt, Equals(Object) jehož skutečná část je rovna hodnotě obj a jehož imaginární část je rovna nule před provedením porovnání. Následující příklad to ilustruje zjištěním, že komplexní číslo a hodnota s plovoucí desetinou čárkou s dvojitou přesností jsou stejné.

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

Poznámky pro volající

Metodu Equals(Complex) používejte opatrně, protože dvě hodnoty, které jsou zdánlivě ekvivalentní, lze považovat za nerovné z důvodu rozdílné přesnosti jejich skutečných a imaginárních komponent. Problém může být zvýrazněn, pokud obj je nutné jej před provedením porovnání převést na .Double Následující příklad porovnává komplexní číslo, jehož skutečná součást se zdá být rovna hodnotě s danou SingleSingle hodnotou. Jak ukazuje výstup, porovnání rovnosti vrátí Falsehodnotu .

C#
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

Jednou z doporučených technik je definování přijatelného rozdílu mezi těmito dvěma hodnotami (například 0,01 % jedné ze skutečných a imaginárních komponent hodnot) místo porovnání hodnot z hlediska rovnosti. Pokud je absolutní hodnota rozdílu mezi těmito dvěma hodnotami menší nebo rovna okraji, je rozdíl pravděpodobně způsoben rozdílem v přesnosti, a proto jsou hodnoty pravděpodobně stejné. Následující příklad používá tuto techniku k porovnání dvou hodnot, které předchozí příklad kódu považoval za nerovné. Nyní zjistí, že jsou si rovny.

C#
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

Platí pro

.NET 10 a další verze
Produkt Verze
.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, 10
.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)

Zdroj:
Complex.cs
Zdroj:
Complex.cs
Zdroj:
Complex.cs

Vrátí hodnotu, která označuje, zda aktuální instance a zadané komplexní číslo mají stejnou hodnotu.

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

Parametry

value
Complex

Komplexní číslo, které se má porovnat.

Návraty

true pokud toto komplexní číslo a value mají stejnou hodnotu, jinak hodnota false.

Implementuje

Poznámky

Metoda Equals(Complex) poskytuje implementaci IEquatable<T> pro Complex strukturu. Funguje o něco lépe než Equals(Object) metoda, protože nemusí převádět svůj parametr na komplexní číslo.

Dvě komplexní čísla jsou rovna, pokud jsou jejich skutečné části rovny a jejich imaginární části jsou rovny. Metoda Equals(Complex) je ekvivalentní následujícímu výrazu:

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

Poznámky pro volající

Metodu Equals(Complex) používejte opatrně, protože dvě hodnoty, které jsou zdánlivě ekvivalentní, lze považovat za nerovné z důvodu rozdílné přesnosti jejich skutečných a imaginárních komponent. Následující příklad hlásí, že (3.33333, 0.142857) a (10/3, 1/7) nejsou si rovny.

C#
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

Jednou z doporučených technik je definování přijatelného rozdílu mezi těmito dvěma hodnotami (například 0,01 % jedné ze skutečných a imaginárních komponent hodnot) místo porovnání hodnot z hlediska rovnosti. Pokud je absolutní hodnota rozdílu mezi těmito dvěma hodnotami menší nebo rovna okraji, je rozdíl pravděpodobně způsoben rozdílem v přesnosti, a proto jsou hodnoty pravděpodobně stejné. Následující příklad používá tuto techniku k porovnání dvou komplexních hodnot, které předchozí příklad kódu považoval za nerovné. Zjistí, že dvě komplexní čísla jsou rovna.

C#
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

Viz také

Platí pro

.NET 10 a další verze
Produkt Verze
.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, 10
.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