บทนำ
เมธอด Decimal.ToDouble() ใน C# ใช้แปลงค่าของ Decimal ที่ระบุให้เป็นจำนวนจุดลอยตัวความแม่นยำสองเท่า (double) เทียบเท่า อาจสูญเสียความแม่นยำได้ เนื่องจาก double มีความแม่นยำน้อยกว่า Decimal
ไวยากรณ์ (Syntax)
public static double ToDouble (decimal val);
โดยที่ val คือค่าทศนิยมที่ต้องการแปลง
ตัวอย่างที่ 1: การแปลงค่าทศนิยมเล็ก
using System;
public class Demo
{
public static void Main()
{
Decimal val1 = -0.22m;
Decimal val2 = -0.01m;
Console.WriteLine("Decimal 1 = " + val1);
Console.WriteLine("Decimal 2 = " + val2);
Double res1 = Decimal.ToDouble(val1);
Double res2 = Decimal.ToDouble(val2);
Console.WriteLine("Double value1 (Decimal to Double) = " + res1);
Console.WriteLine("Double value2 (Decimal to Double) = " + res2);
}
}
ผลลัพธ์
Decimal 1 = -0.22 Decimal 2 = -0.01 Double value1 (Decimal to Double) = -0.22 Double value2 (Decimal to Double) = -0.01
ตัวอย่างที่ 2: การแปลงค่าขนาดใหญ่
using System;
public class Demo
{
public static void Main()
{
Decimal val1 = 23828m;
Decimal val2 = 976587687595766665m;
Console.WriteLine("Decimal 1 = " + val1);
Console.WriteLine("Decimal 2 = " + val2);
Double res1 = Decimal.ToDouble(val1);
Double res2 = Decimal.ToDouble(val2);
Console.WriteLine("Double value1 (Decimal to Double) = " + res1);
Console.WriteLine("Double value2 (Decimal to Double) = " + res2);
}
}
ผลลัพธ์
Decimal 1 = 23828 Decimal 2 = 976587687595766665 Double value1 (Decimal to Double) = 23828 Double value2 (Decimal to Double) = 9.76587687595767E+17
สรุป
เมธอด Decimal.ToDouble() เหมาะสำหรับการทำงานร่วมกับ API ที่ต้องการ double แต่ควรระวังการสูญเสียความแม่นยำ เนื่องจาก double มีความแม่นยำประมาณ 15-17 หลักสำคัญ ในขณะที่ Decimal มี 28-29 หลัก