اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

الfloat معرفة حسب معايير IEEE-754 والتي تنص علي أن يتم حجز عدد من الbits من أجل الرقم وعدد من الbits من أجل الأس , حيث يتم كتابة الرقم علي الصورة الأتية

10.25=1025e-2

حيث e-2 تعني 10 مرفوعة للقوة سالب 2

بينما في الnumeric أو التي تسمى Fixed-point Decimals (النقطة الثابتة العشرية)  يتم حجز عدد الbits المستخدمة في كلاً من الرقم قبل العﻻمة العشرية والرقم بعد العﻻمة العشرية من قبل تعيين قيمتهم

حسناً, ما الفرق إذاً؟ الfloat أسرع في حسابه ولكن دقته أقل, وبالمناسبة هذ نفس النوع الذي يتم إستخدامه في الc/c++ المكاتب القياسية, فيمكنك تجربة الكود الأتي

float x = 0.1;
float y = 0.2;
printf("x+y = %.20f\n", x+y);
printf("0.3 = %.20f\n", 0.3);

وعند النظر إلى الناتج نجد أ،:

الناتج المتوقع:
x+y = 0.300000
0.3 = 0.300000


بينما الناتج الحقيقي:
x+y = 0.30000001192092895508
0.3 = 0.29999999999999998890

بينما في الnumeric تكون دقته عالية ولكن يكون أبطأ في حسابه من الfloat

وبوجه عام فإن الfloat دقته تكون كافية ومرضية إلا في حالة أن تكون تتعامل مع بيانات حساسة مثل الحسابات العلمية أو حسابات البنوك

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...