Complex.Equals Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve un valor que indica si dos números complejos son iguales.
Sobrecargas
Equals(Object) |
Devuelve un valor que indica si la instancia actual y un objeto especificado tienen el mismo valor. |
Equals(Complex) |
Devuelve un valor que indica si la instancia actual y el número complejo especificado tienen el mismo valor. |
Equals(Object)
- Source:
- Complex.cs
- Source:
- Complex.cs
- Source:
- Complex.cs
Devuelve un valor que indica si la instancia actual y un objeto especificado tienen el mismo valor.
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
Parámetros
- obj
- Object
Objeto que se va a comparar.
Devoluciones
Es true
si el parámetro obj
es un objeto Complex o un tipo capaz de realizar una conversión implícita a un objeto Complex, y su valor es igual al valor del objeto Complex actual; de lo contrario, es false
.
Comentarios
Dos números complejos son iguales si sus partes reales son iguales y sus partes imaginarias son iguales. El Equals(Object) método es equivalente a la siguiente expresión:
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)
Si el obj
parámetro no es un Complex objeto, pero es un tipo de datos para el que se define una conversión implícita, el Equals(Object) método convierte obj
en un Complex objeto cuya parte real es igual al valor de obj
y cuya parte imaginaria es igual a cero antes de realizar la comparación. En el ejemplo siguiente se muestra esto mediante la búsqueda de que un número complejo y un valor de punto flotante de precisión doble son iguales.
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.
Notas a los autores de las llamadas
Utilice el Equals(Complex) método con precaución, ya que dos valores que aparentemente son equivalentes se pueden considerar desiguales debido a la precisión diferente de sus componentes reales e imaginarios. El problema se puede acentuar si obj
se debe convertir en un Double antes de realizar la comparación. En el ejemplo siguiente se compara un número complejo cuyo componente real parece ser igual a un Single valor con ese Single valor. Como se muestra en la salida, la comparación de igualdad devuelve 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
Una técnica recomendada es definir un margen aceptable de diferencia entre los dos valores (como .01 % de uno de los componentes reales e imaginarios de los valores) en lugar de comparar los valores de igualdad. Si el valor absoluto de la diferencia entre los dos valores es menor o igual que ese margen, es probable que la diferencia se deba a una diferencia de precisión y, por lo tanto, es probable que los valores sean iguales. En el ejemplo siguiente se usa esta técnica para comparar los dos valores que el ejemplo de código anterior encontró que no es igual. Ahora los encuentra iguales.
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
Se aplica a
Equals(Complex)
- Source:
- Complex.cs
- Source:
- Complex.cs
- Source:
- Complex.cs
Devuelve un valor que indica si la instancia actual y el número complejo especificado tienen el mismo valor.
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
Parámetros
- value
- Complex
Número complejo que se va a comparar.
Devoluciones
Es true
si este número complejo y value
tienen el mismo valor; de lo contrario, es false
.
Implementaciones
Comentarios
El Equals(Complex) método proporciona la IEquatable<T> implementación de la Complex estructura. Funciona ligeramente mejor que Equals(Object) el método porque no tiene que convertir su parámetro en un número complejo.
Dos números complejos son iguales si sus partes reales son iguales y sus partes imaginarias son iguales. El Equals(Complex) método es equivalente a la siguiente expresión:
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)
Notas a los autores de las llamadas
Utilice el Equals(Complex) método con precaución, ya que dos valores que aparentemente son equivalentes se pueden considerar desiguales debido a la precisión diferente de sus componentes reales e imaginarios. En el ejemplo siguiente se informa de que (3.33333, 0.142857)
y (10/3, 1/7)
no son iguales.
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
Una técnica recomendada es definir un margen aceptable de diferencia entre los dos valores (como .01 % de uno de los componentes reales e imaginarios de los valores) en lugar de comparar los valores de igualdad. Si el valor absoluto de la diferencia entre los dos valores es menor o igual que ese margen, es probable que la diferencia se deba a una diferencia de precisión y, por lo tanto, es probable que los valores sean iguales. En el ejemplo siguiente se usa esta técnica para comparar los dos valores complejos que el ejemplo de código anterior encontró que no era igual. Busca que los dos números complejos sean iguales.
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