Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด Double.Equals() ใน C# พร้อมตัวอย่าง


เมธอด 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