เมธอด Double.Equals() ใน C# ใช้สำหรับตรวจสอบความเท่ากัน ระหว่างอินสแตนซ์ Double กับออบเจ็กต์หรือค่า Double อื่น คืนค่า true หากเท่ากัน มิฉะนั้น false
ไวยากรณ์ (Syntax)
public bool Equals (double obj); public override bool Equals (object ob);
obj(double) — ค่า double ที่ต้องการเปรียบเทียบob(object) — ออบเจ็กต์ที่ต้องการเปรียบเทียบ (ต้องเป็น double หรือค่าที่แปลงเป็น double ได้)
ตัวอย่างที่ 1: เปรียบเทียบ double กับ double
using System;
public class Demo
{
public static void Main()
{
double d1 = 150d;
double d2 = 150d;
Console.WriteLine("Double1 Value = " + d1);
Console.WriteLine("Double2 Value = " + d2);
Console.WriteLine("Are both the double values equal? = " + d1.Equals(d2));
}
}
ผลลัพธ์
Double1 Value = 150 Double2 Value = 150 Are both the double values equal? = True
ตัวอย่างที่ 2: เปรียบเทียบ double กับ object
using System;
public class Demo
{
public static void Main()
{
double d1 = 150d;
object ob1 = 1 / 2; // ผลลัพธ์คือ 0 (int division)
Console.WriteLine("Double1 Value = " + d1);
Console.WriteLine("Object Value = " + ob1);
Console.WriteLine("Are both the values equal? = " + d1.Equals(ob1));
}
}
ผลลัพธ์
Double1 Value = 150 Object Value = 0 Are both the values equal? = False
ข้อสังเกตสำคัญ
Equals(double)มีประสิทธิภาพดีกว่าEquals(object)เพราะไม่ต้องบอกซ์/แคสต์- การเปรียบเทียบ double ควรระวังปัญหาความแม่นยำจุดลอยตัว (floating-point precision) — เช่น
0.1 + 0.2 != 0.3 - สำหรับการเปรียบเทียบที่ต้องการทอเลอเรนซ์ ใช้
Math.Abs(a - b) < epsilon double.NaN.Equals(double.NaN)คืนค่าtrue(ต่างจาก==ที่คืน false)- ในตัวอย่างที่ 2
1 / 2เป็นการหารจำนวนเต็ม (int) ผลลัพธ์คือ 0 ไม่ใช่ 0.5 — ต้องเขียน1.0 / 2.0หรือ1d / 2d