Complex.Equals Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan nilai yang menunjukkan apakah dua bilangan kompleks sama.
Overload
Equals(Object) |
Mengembalikan nilai yang menunjukkan apakah instans saat ini dan objek tertentu memiliki nilai yang sama. |
Equals(Complex) |
Mengembalikan nilai yang menunjukkan apakah instans saat ini dan bilangan kompleks tertentu memiliki nilai yang sama. |
Equals(Object)
- Sumber:
- Complex.cs
- Sumber:
- Complex.cs
- Sumber:
- Complex.cs
Mengembalikan nilai yang menunjukkan apakah instans saat ini dan objek tertentu memiliki nilai yang sama.
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
Objek yang akan dibandingkan.
Mengembalikan
true
obj
jika parameter adalah Complex objek atau jenis yang mampu konversi implisit ke Complex objek, dan nilainya sama dengan objek saat iniComplex; jika tidak, false
.
Keterangan
Dua bilangan kompleks sama jika bagian aslinya sama dan bagian imajinernya sama. Metode Equals(Object) ini setara dengan ekspresi berikut:
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
Jika parameter bukan Complex objek, tetapi ini adalah jenis data yang konversi implisitnya obj
ditentukan, Equals(Object) metode akan dikonversi ke Complex objek yang bagian aslinya sama dengan nilai obj
dan yang bagian imajinernya sama dengan nol sebelum melakukan perbandingan. Contoh berikut mengilustrasikan ini dengan menemukan bahwa angka kompleks dan nilai floating-point presisi ganda sama.
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.
Catatan Bagi Pemanggil
Gunakan metode dengan Equals(Complex) hati-hati, karena dua nilai yang tampaknya setara dapat dianggap tidak sama karena presisi yang berbeda dari komponen nyata dan imajiner mereka. Masalah dapat diaksenuasi jika obj
harus dikonversi ke Double sebelum melakukan perbandingan. Contoh berikut membandingkan bilangan kompleks yang komponen nyatanya tampaknya sama Single dengan nilai dengan nilai tersebut Single . Seperti yang ditunjukkan oleh output, perbandingan untuk kesetaraan False
mengembalikan .
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
Salah satu teknik yang direkomendasikan adalah menentukan margin perbedaan yang dapat diterima antara dua nilai (seperti .01% dari salah satu komponen nyata dan imajiner nilai) alih-alih membandingkan nilai untuk kesetaraan. Jika nilai absolut perbedaan antara kedua nilai kurang dari atau sama dengan margin tersebut, perbedaannya kemungkinan disebabkan oleh perbedaan presisi dan, oleh karena itu, nilainya cenderung sama. Contoh berikut menggunakan teknik ini untuk membandingkan dua nilai yang ditemukan contoh kode sebelumnya tidak sama. Sekarang menemukan mereka sama.
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
Berlaku untuk
Equals(Complex)
- Sumber:
- Complex.cs
- Sumber:
- Complex.cs
- Sumber:
- Complex.cs
Mengembalikan nilai yang menunjukkan apakah instans saat ini dan bilangan kompleks tertentu memiliki nilai yang sama.
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
Bilangan kompleks untuk dibandingkan.
Mengembalikan
true
jika angka kompleks ini dan value
memiliki nilai yang sama; jika tidak, false
.
Penerapan
Keterangan
Metode ini Equals(Complex) menyediakan IEquatable<T> implementasi untuk Complex struktur. Performanya sedikit lebih baik daripada Equals(Object) metode karena tidak harus mengonversi parameternya menjadi bilangan kompleks.
Dua bilangan kompleks sama jika bagian aslinya sama dan bagian imajinernya sama. Metode Equals(Complex) ini setara dengan ekspresi berikut:
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)
Catatan Bagi Pemanggil
Gunakan metode dengan Equals(Complex) hati-hati, karena dua nilai yang tampaknya setara dapat dianggap tidak sama karena presisi yang berbeda dari komponen nyata dan imajiner mereka. Contoh berikut melaporkan bahwa (3.33333, 0.142857)
dan (10/3, 1/7)
tidak sama.
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
Salah satu teknik yang direkomendasikan adalah menentukan margin perbedaan yang dapat diterima antara dua nilai (seperti .01% dari salah satu komponen nyata dan imajiner nilai) alih-alih membandingkan nilai untuk kesetaraan. Jika nilai absolut perbedaan antara kedua nilai kurang dari atau sama dengan margin tersebut, perbedaannya kemungkinan disebabkan oleh perbedaan presisi, dan, oleh karena itu, nilainya cenderung sama. Contoh berikut menggunakan teknik ini untuk membandingkan dua nilai kompleks yang ditemukan contoh kode sebelumnya tidak sama. Ini menemukan dua bilangan kompleks sama.
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