บทนำ
เมธอด Decimal.ToInt64() ใน C# ใช้แปลงค่าของ Decimal ที่ระบุให้เป็นจำนวนเต็ม 64 บิตที่มีเครื่องหมาย (long) เทียบเท่า โดยจะตัดส่วนทศนิยมทิ้ง (truncate toward zero)
ไวยากรณ์ (Syntax)
public static long ToInt64 (decimal val);
โดยที่ val คือค่าทศนิยมที่ต้องการแปลง
ตัวอย่างที่ 1: การแปลงค่าบวกและลบ
using System;
public class Demo
{
public static void Main()
{
Decimal val1 = -567.7989m;
Decimal val2 = 456.000m;
Console.WriteLine("Decimal 1 = " + val1);
Console.WriteLine("Decimal 2 = " + val2);
long res1 = Decimal.ToInt64(val1);
long res2 = Decimal.ToInt64(val2);
Console.WriteLine("64-bit signed integer (val1) = " + res1);
Console.WriteLine("64-bit signed integer (val2) = " + res2);
}
}
ผลลัพธ์
Decimal 1 = -567.7989 Decimal 2 = 456.000 64-bit signed integer (val1) = -567 64-bit signed integer (val2) = 456
ตัวอย่างที่ 2: การแปลงค่าทศนิยมเล็กน้อย
using System;
public class Demo
{
public static void Main()
{
Decimal val1 = 1.00m;
Decimal val2 = 34.678m;
Console.WriteLine("Decimal 1 = " + val1);
Console.WriteLine("Decimal 2 = " + val2);
long res1 = Decimal.ToInt64(val1);
long res2 = Decimal.ToInt64(val2);
Console.WriteLine("64-bit signed integer (val1) = " + res1);
Console.WriteLine("64-bit signed integer (val2) = " + res2);
}
}
ผลลัพธ์
Decimal 1 = 1.00 Decimal 2 = 34.678 64-bit signed integer (val1) = 1 64-bit signed integer (val2) = 34
สรุป
เมธอด Decimal.ToInt64() ทำการ truncate (ตัดทิ้ง) ส่วนทศนิยม ไม่ได้ปัดเศษ หากค่า Decimal อยู่นอกขอบเขตของ Int64 (-9,223,372,036,854,775,808 ถึง 9,223,372,036,854,775,807) จะเกิด OverflowException