Avatar ·

Decimal vs Double في C#: أي نوع بيانات تختار ومتى تستخدم؟

مرحبًا بالجميع! أنا مبتدئ في C# وعند كتابة آلة حاسبة لمتجر إلكتروني واجهت مشكلة في اختيار نوع البيانات للحسابات المالية. لدي كود بسيط: ```csharp double price = 19.99; double tax = 0.21; double total = price * (1 + tax); Console.WriteLine(total); // يطبع شيئًا مثل 24.1879... بدلاً من 24.1879 ``` كنت أتوقع الحصول على 24.1879 بالضبط، لكن أحيانًا تظهر أطراف غريبة مثل 24.187899999999997. هذا لا يحدث دائمًا، لكنه يحدث بما يكفي لتعطيل منطق مقارنة الأسعار. بحثت في Google ووجدت أن هناك نوع `decimal`، لكنني لا أفهم الفرق. يبدو أن كلاهما يخزن أعدادًا كسرية. عندما استبدلت `double` بـ `decimal`: ```csharp decimal price = 19.99m; decimal tax = 0.21m; decimal total = price * (1 + tax); Console.WriteLine(total); // 24.1879 ``` أصبح كل شيء يعمل بشكل مثالي. لكنني سمعت أن `decimal` أبطأ ويستخدم ذاكرة أكبر. الأسئلة: 1. ما الفرق الجوهري بين `double` و `decimal`؟ 2. متى يجب استخدام