Complex.Equals Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí hodnotu, která určuje, zda jsou dvě komplexní čísla rovna.
Přetížení
| Name | Description |
|---|---|
| Equals(Object) |
Vrátí hodnotu, která určuje, zda aktuální instance a zadaný objekt mají stejnou hodnotu. |
| Equals(Complex) |
Vrátí hodnotu, která určuje, zda aktuální instance a zadané komplexní číslo mají stejnou hodnotu. |
Equals(Object)
- Zdroj:
- Complex.cs
- Zdroj:
- Complex.cs
- Zdroj:
- Complex.cs
- Zdroj:
- Complex.cs
- Zdroj:
- Complex.cs
Vrátí hodnotu, která určuje, zda aktuální instance a zadaný objekt mají stejnou hodnotu.
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
Parametry
- obj
- Object
Objekt k porovnání
Návraty
true
obj je-li Complex parametr objekt nebo typ schopný implicitní převod na Complex objekt a jeho hodnota je rovna aktuálnímu Complex objektu; jinak, false.
Poznámky
Dvě komplexní čísla jsou stejná, pokud jsou jejich skutečné části stejné a jejich imaginární části jsou stejné. Metoda Equals(Object) je ekvivalentní následujícímu výrazu:
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)
obj Pokud parametr není Complex objekt, ale jedná se o datový typ, pro který je definován implicitní převod, metoda převede Equals(Object) na obj objekt, Complex jehož skutečná část je rovna hodnotě obj a je imaginární část 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í desetinnou čárkou s dvojitou přesností jsou stejné.
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.
Poznámky pro volající
Použijte metodu Equals(Complex) s opatrností, protože dvě hodnoty, které jsou zřejmě ekvivalentní, mohou být považovány za nerovné kvůli odlišné přesnosti jejich skutečných a imaginárních komponent. Problém může být zvýrazněn, pokud obj je nutné před provedením porovnání převést na Double hodnotu. Následující příklad porovnává komplexní číslo, jehož reálná komponenta se zdá být rovna hodnotě s danou SingleSingle hodnotou. Jak ukazuje výstup, porovnání rovnosti vrátí 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
Jednou z doporučených technik je definování přijatelného okraje rozdílu mezi těmito dvěma hodnotami (například 01% jedné ze skutečných a imaginárních komponent hodnot) místo porovnání hodnot pro rovnost. Pokud je absolutní hodnota rozdílu mezi těmito dvěma hodnotami menší nebo rovna okraji, bude rozdíl pravděpodobně způsoben rozdílem v přesnosti, a proto budou 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 zjistil, že je nerovný. Teď je najde, aby byly stejné.
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
Platí pro
Equals(Complex)
- Zdroj:
- Complex.cs
- Zdroj:
- Complex.cs
- Zdroj:
- Complex.cs
- Zdroj:
- Complex.cs
- Zdroj:
- Complex.cs
Vrátí hodnotu, která určuje, zda aktuální instance a zadané komplexní číslo mají stejnou hodnotu.
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
Parametry
- value
- Complex
Komplexní číslo, které se má porovnat.
Návraty
true pokud je toto komplexní číslo a value má stejnou hodnotu, falsev opačném případě .
Implementuje
Poznámky
Metoda Equals(Complex) poskytuje implementaci IEquatable<T> struktury Complex . Provádí trochu lépe než metoda, Equals(Object) protože nemusí převést jeho parametr na komplexní číslo.
Dvě komplexní čísla jsou stejná, pokud jsou jejich skutečné části stejné a jejich imaginární části jsou stejné. Metoda Equals(Complex) je ekvivalentní následujícímu výrazu:
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)
Poznámky pro volající
Použijte metodu Equals(Complex) s opatrností, protože dvě hodnoty, které jsou zřejmě ekvivalentní, mohou být považovány za nerovné kvůli odlišné 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 rovny.
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
Jednou z doporučených technik je definování přijatelného okraje rozdílu mezi těmito dvěma hodnotami (například 01% jedné ze skutečných a imaginárních komponent hodnot) místo porovnání hodnot pro rovnost. Pokud je absolutní hodnota rozdílu mezi těmito dvěma hodnotami menší nebo rovna okraji, je pravděpodobné, že rozdíl bude způsoben rozdílem v přesnosti, a proto budou hodnoty pravděpodobně stejné. Následující příklad používá tuto techniku k porovnání dvou složitých hodnot, které předchozí příklad kódu zjistil, že je nerovný. Najde dvě komplexní čísla, která se mají shodovat.
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