تمرين - اكتشاف أنواع النقاط العائمة
- 8 دقائق
في هذا التمرين، يمكنك العمل مع أنواع بيانات الفاصلة العائمة للتعرف على الاختلافات الدقيقة بين كل نوع بيانات.
النقطة العائمة هي نوع قيمة بسيط يمثل الأرقام الموجودة على يمين الخانة العشرية. على عكس الأرقام المتكاملة ، هناك اعتبارات أخرى تتجاوز الحد الأقصى والحد الأدنى للقيم التي يمكنك تخزينها في نوع فاصلة عائمة معين.
تقييم أنواع الفاصلة العائمة
أولا ، يجب أن تفكر في أرقام الدقة التي يسمح بها كل نوع. الدقة هي عدد أماكن القيم المخزنة بعد الفاصلة العشرية.
ثانيا ، يجب أن تفكر في الطريقة التي يتم بها تخزين القيم والتأثير على دقة القيمة. على سبيل المثال، float يتم double تخزين القيم داخليا بتنسيق ثنائي (الأساس 2)، بينما decimal يتم تخزينها بتنسيق عشري (الأساس 10). لماذا هذا الأمر مهم؟
يمكن أن يؤدي إجراء العمليات الحسابية على قيم الفاصلة العائمة الثنائية إلى نتائج قد تفاجئك إذا كنت معتادا على الرياضيات العشرية (الأساس 10). في كثير من الأحيان ، تكون الرياضيات الفاصلة العائمة الثنائية تقريبية للقيمة الحقيقية. لذلك ، float وهي double مفيدة لأنه يمكن تخزين أعداد كبيرة باستخدام بصمة ذاكرة صغيرة. ومع ذلك ، float ويجب double استخدامه فقط عندما يكون التقريب مفيدا. على سبيل المثال ، يكون الابتعاد بضعة آلاف عند حساب تناثر كرة الثلج في لعبة فيديو قريبا بما فيه الكفاية.
عندما تحتاج إلى إجابة أكثر دقة ، يجب عليك استخدام decimal. كل قيمة من الكتب decimal لها بصمة ذاكرة كبيرة نسبيا ، ومع ذلك فإن إجراء العمليات الحسابية يمنحك نتيجة أكثر دقة. لذلك ، يجب عليك استخدامه decimal عند العمل مع البيانات المالية أو أي سيناريو تحتاج فيه إلى نتيجة دقيقة من عملية حسابية.
استخدم الخصائص MinValue وMaxValue لكل نوع تعائم موقع
احذف عامل تشغيل
//تعليق السطر أو استخدمه للتعليق على جميع التعليمات البرمجية من التدريبات السابقة.للاطلاع على نطاقات القيم لأنواع البيانات المختلفة، قم بتحديث التعليمات البرمجية الخاصة بك في محرر التعليمات البرمجية Visual Studio كما يلي:
Console.WriteLine("");
Console.WriteLine("Floating point types:");
Console.WriteLine($"float : {float.MinValue} to {float.MaxValue} (with ~6-9 digits of precision)");
Console.WriteLine($"double : {double.MinValue} to {double.MaxValue} (with ~15-17 digits of precision)");
Console.WriteLine($"decimal: {decimal.MinValue} to {decimal.MaxValue} (with 28-29 digits of precision)");
في قائمة ملف Visual Studio Code، حدد Save.
يجب حفظ ملف Program.cs قبل إنشاء التعليمات البرمجية أو تشغيلها.
في لوحة EXPLORER، لفتح Terminal في موقع مجلد TestProject، انقر بزر الماوس الأيمن فوق TestProject، ثم حدد Open in Integrated Terminal.
يجب فتح لوحة Terminal، ويجب أن تتضمن موجه أوامر يظهر أن Terminal مفتوحة لموقع مجلد TestProject.
في موجه الأوامر Terminal، لتشغيل التعليمات البرمجية، اكتب dotnet run ثم اضغط على Enter.
إذا رأيت رسالة تقول "تعذر العثور على مشروع لتشغيله"، فتأكد من أن موجه أوامر "الوحدة الطرفية" يعرض موقع مجلد TestProject المتوقع. على سبيل المثال:
C:\Users\someuser\Desktop\csharpprojects\TestProject>ينبغي أن تشاهد المخرج التالي:
Floating point types: float : -3.402823E+38 to 3.402823E+38 (with ~6-9 digits of precision) double : -1.79769313486232E+308 to 1.79769313486232E+308 (with ~15-17 digits of precision) decimal: -79228162514264337593543950335 to 79228162514264337593543950335 (with 28-29 digits of precision)
كما ترى ، float واستخدم double تدوينا مختلفا عن ما يتم استخدامه decimal لتمثيل أكبر وأصغر قيمه الممكنة. لكن ماذا يعني هذا الترميز؟
فك رموز قيم الفاصلة العائمة الكبيرة
نظرا لأن أنواع الفاصلة العائمة يمكن أن تحتوي على أعداد كبيرة بدقة ، يمكن تمثيل قيمها باستخدام "تدوين E" ، وهو شكل من أشكال التدوين العلمي الذي يعني "مضروبا في 10 مرفوعا إلى قوة". لذا ، فإن القيمة مثل 5E+2 هي القيمة 500 لأنها تعادل 5 * 10 ^ 2 ، أو 5 × 102.
خلاصة
- نوع الفاصلة العائمة هو نوع بيانات قيمة بسيط يمكنه الاحتفاظ بأعداد كسرية.
- يتطلب اختيار نوع الفاصلة العائمة المناسب لتطبيقك التفكير في أكثر من مجرد القيم القصوى والدنيا التي يمكن أن يحتفظ بها. يجب عليك أيضا مراعاة عدد القيم التي يمكن الاحتفاظ بها بعد العلامة العشرية ، وكيفية تخزين الأرقام ، وكيف تؤثر وحدة التخزين الداخلية على نتيجة عمليات الرياضيات.
- يمكن أحيانا تمثيل قيم الفاصلة العائمة باستخدام "تدوين E" عندما تنمو الأرقام بشكل خاص.
- هناك اختلاف جوهري في كيفية تعامل
decimalالمترجم ووقت التشغيل بدلا منfloatأوdouble، خاصة عند تحديد مقدار الدقة اللازمة من العمليات الرياضية.
اختبر معلوماتك
الملاحظات
هل كانت هذه الصفحة مفيدة؟
لا
هل تحتاج إلى مساعدة مع هذا الموضوع؟
هل تريد محاولة استخدام Ask Learn لتوضيح هذا الموضوع أو إرشادك خلاله؟