เมธอด Double.CompareTo() ใน C# ใช้สำหรับเปรียบเทียบ อินสแตนซ์ double ปัจจุบันกับค่า double หรือออบเจ็กต์อื่น คืนค่าจำนวนเต็มบ่งชี้ลำดับ
ไวยากรณ์ (Syntax)
public int CompareTo (double val); public int CompareTo (object val);
val(double) — ค่า double ที่ต้องการเปรียบเทียบval(object) — ออบเจ็กต์ที่ต้องการเปรียบเทียบ (ต้องเป็น double)
ค่าที่คืน (Return Value)
| ค่า | ความหมาย |
|---|---|
| น้อยกว่า 0 | อินสแตนซ์ปัจจุบันน้อยกว่าค่าที่เปรียบเทียบ |
| เท่ากับ 0 | อินสแตนซ์ปัจจุบันเท่ากับค่าที่เปรียบเทียบ |
| มากกว่า 0 | อินสแตนซ์ปัจจุบันมากกว่าค่าที่เปรียบเทียบ |
ตัวอย่างที่ 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.CompareTo(d2));
}
}
ผลลัพธ์
Double1 Value = 150 Double2 Value = 150 Are both the double values equal? = 0
ตัวอย่างที่ 2: เปรียบเทียบ double กับ object
using System;
public class Demo
{
public static void Main()
{
double d1 = 20d;
object d2 = 20d;
Console.WriteLine("Double1 Value = " + d1);
Console.WriteLine("Double2 Value = " + d2);
Console.WriteLine("Are both the double values equal? = " + d1.CompareTo(d2));
}
}
ผลลัพธ์
Double1 Value = 20 Double2 Value = 20 Are both the double values equal? = 0
ข้อสังเกตสำคัญ
CompareTo(double)เร็วกว่าCompareTo(object)เพราะหลีกเลี่ยง boxing/unboxing- หาก
valเป็นnullจะคืนค่า 1 (อินสแตนซ์ใดๆ มากกว่า null) - หาก
valไม่ใช่ double จะโยนArgumentException - ค่า
NaNถือว่าน้อยกว่าค่าใดๆ รวมถึงตัวมันเอง (double.NaN.CompareTo(double.NaN) == 0แต่double.NaN < xเป็น true) - เหมาะสำหรับการจัดเรียง (sorting) และการตัดสินใจเชิงเปรียบเทียบ