ประเภทข้อมูลที่ดีที่สุดที่จะใช้สำหรับสกุลเงินใน C # คือทศนิยม ชนิดทศนิยมเป็นชนิดข้อมูล 128 บิต ที่เหมาะสมสำหรับการคำนวณทางการเงินและการเงิน ประเภททศนิยมสามารถแสดงค่าได้ตั้งแต่ 1.0 * 10^-28 ถึงประมาณ 7.9 * 10^28 โดยมีตัวเลขนัยสำคัญ 28-29 หลัก ในการเริ่มต้นตัวแปรทศนิยม ให้ใช้คำต่อท้าย m หรือ M
ทศนิยม b =2.1m;
ตัวอย่างด้านล่างแสดงค่าต่ำสุดและสูงสุดของทศนิยม
ตัวอย่าง
using System; namespace DemoApplication{ public class Program{ public static void Main(){ Console.WriteLine($"Deciaml Min Value: {decimal.MinValue}"); Console.WriteLine($"Deciaml Max Value: {decimal.MaxValue}"); Console.ReadLine(); } } }
ผลลัพธ์
Deciaml Min Value: -79228162514264337593543950335Deciaml Max Value: 79228162514264337593543950335
ชุดจำกัดของค่าประเภททศนิยมอยู่ในรูปแบบ (-1)^s * c * 10^-e โดยที่เครื่องหมาย s เป็น 0 หรือ 1 สัมประสิทธิ์ c ให้ 0 <=*c* <2^ 96 และมาตราส่วน e เท่ากับ 0 <=e <=28 ประเภททศนิยมไม่สนับสนุนค่าศูนย์ที่ลงนาม อนันต์ หรือของ NaN ทศนิยมจะแสดงเป็นจำนวนเต็ม 96 บิต ขยายด้วยกำลังสิบ สำหรับทศนิยมที่มีค่าสัมบูรณ์น้อยกว่า 1.0m ค่าจะตรงกับตำแหน่งทศนิยมที่ 28 แต่ห้ามเพิ่มเติม
สำหรับทศนิยมที่มีค่าสัมบูรณ์มากกว่าหรือเท่ากับ 1.0m ค่าจะเป็น 28 หรือ 29 หลักเท่านั้น ตรงกันข้ามกับประเภทข้อมูลทศนิยมและสองเท่า ตัวเลขเศษส่วนทศนิยม เช่น 0.1 สามารถแสดงในรูปแบบทศนิยมได้อย่างแม่นยำ ในการแทนค่าทศนิยมและการแทนค่าสองเท่า ตัวเลขดังกล่าวมักจะเป็นเศษส่วนอนันต์ ทำให้การแทนค่าเหล่านั้นมีแนวโน้มที่จะเกิดข้อผิดพลาดในการปัดเศษขึ้น
ควรใช้ประเภททศนิยมมากกว่าทศนิยมและทศนิยมสองเท่า เนื่องจากมีความแม่นยำมากกว่าและช่วงที่เล็กกว่าทั้งทศนิยมและสองเท่า
ตัวอย่าง
ให้เราพิจารณาตัวอย่างที่แปลงดอลลาร์สหรัฐเป็นรูปีอินเดีย
using System; namespace DemoApplication{ public class Program{ public static void Main(){ decimal usd = 2.5m; Console.WriteLine($"USD: {usd}"); decimal inrOfOneUSD = 75.04m; Console.WriteLine($"INR value of one USD: {inrOfOneUSD}"); decimal inr = usd * inrOfOneUSD; Console.WriteLine($"INR value: {inr}"); Console.ReadLine(); } } }
ผลลัพธ์
ผลลัพธ์ของโค้ดด้านบนคือ
USD: 2.5 INR value of one USD: 75.04 INR value: 187.600