decimal (مرجع #C)

الكلمة الأساسية decimal تشير إلى نوع بيانات 128-بت. مقارنة بأنواع الفاصلة العائمة، للنوع decimal دقة أكبر ونطاق أصغر مما يجعله مناسباً للحسابات المالية والنقدية. النطاق التقريبي والدقة التقريبية لنوع decimal مبين في الجدول التالي.

Type

النطاق التقريبي

الدقة

نوع .NET framework

decimal

(-7.9 × 2810 إلى 7.9 × 2810) / (0 إلى 2810)

28-29 أرقام الهامة

System.Decimal

القيم الحرفية

إذا كنت تريد معاملة القيمة الحرفية الحقيقية الرقمية على أنه decimal الحقه بـ m أو M، على سبيل المثال:

decimal myMoney = 300.5m;

بدون إلحاقه بـ m تتم معاملة الرقم على أنه double ويقوم بإنشاء خطأ في المحول البرمجي.

التحويلات

يتم تحويل الأنواع الرقمية ضمنياً إلى decimal ويتم تقييم الناتج إلى decimal. وبالتالي يمكنك تهيئة متغير من نوع decimal باستخدام عدد صحيح حرفي بدون إلحاقه بأي شيء، كما يلي:

decimal myMoney = 300;

لا توجد أية تحويلات ضمنية بين أنواع الفاصلة العائمة و النوع decimal، لذلك يجب استخدام تحويل (cast) للتحويل بين هذين النوعين. فعلى سبيل المثال:

decimal myMoney = 99.9m;
double x = (double)myMoney;
myMoney = (decimal)x;

يمكن أيضاً خلط النوع decimal والأنواع الرقمية الأساسية في نفس التعبير. ومع ذلك، خلط النوع decimal وأنواع الفاصلة العائمة يؤدي بدون تحويل (cast) يعمل خطأ في التحويل البرمجي.

للحصول على معلومات أكثر حول التحويلات الرقمية الضمنية، راجعجدول التحويلات الرقمية الواضحة (مرجع #C).

للحصول على معلومات أكثر حول التحويلات الرقمية الصريحة، راجعجدول التحويلات الرقمية الواضحة (مرجع #C).

تنسيق المخرجات العشرية

يمكنك تنسيق النتائج باستخدام الأسلوب String.Format أو عبر الأسلوب Console.Write الذي يستدعي String.Format(). يتم تحديد تنسيق العملة باستخدام سلسلة تنسيق العملة القياسي "C" أو "c" كما هو موضح في المثال الثاني لاحقًا في هذه المقالة. ولمزيد من المعلومات حول الأسلوب String.Format ، راجع String.Format.

مثال

في هذا المثال، تم خلط decimal و int في نفس التعبير. يتم تقييم الناتج إلى نوع decimal.

يستخدم المثال التالي عبارة تحاول إضافة المتغيرات من نوع double و decimal:

double x = 9;
Console.WriteLine(d + x); // Error

والنتيجة هي الخطأ التالي:

Operator '+' cannot be applied to operands of type 'double' and 'decimal'


public class TestDecimal
{
    static void Main()
    {
        decimal d = 9.1m;
        int y = 3;
        Console.WriteLine(d + y);   // Result converted to decimal
    }
}
// Output: 12.1

في هذا المثال، يتم تنسيق المخرجات باستخدام سلسلة تنسيق العملة. لاحظ أن تم تقريب x لأن المنازل العشرية تجاوزت $0.99. تم عرض المتغير y الذي يمثل الحد الأقصى للأرقام الدقيقة بالضبط في التنسيق الصحيح.

public class TestDecimalFormat
{
    static void Main()
    {
        decimal x = 0.999m;
        decimal y = 9999999999999999999999999999m;
        Console.WriteLine("My amount = {0:C}", x);
        Console.WriteLine("Your amount = {0:C}", y);
    }
}
/* Output:
    My amount = $1.00
    Your amount = $9,999,999,999,999,999,999,999,999,999.00
*/

مواصفات لغة #C

لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.

راجع أيضًا:

المرجع

الكلمات الأساسية لـ #C

جدول الأنواع المتكاملة (مرجع C#)

جدول الأنواع المضمنة (مرجع C#)

جدول التحويلات الرقمية الواضحة (مرجع #C)

جدول التحويلات الرقمية الواضحة (مرجع #C)

Decimal

المبادئ

دليل البرمجة لـ #C

موارد أخرى

مرجع C#‎