الأنواع الصحيحة مقابل أنواع الفاصلة العائمة
اختر النوع الرقمي المناسب بفهم الأحجام والنطاقات والمفاضلات المتعلقة بالدقة.
الأنواع الصحيحة مقابل أنواع الفاصلة العائمة درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.
عالمان من الأعداد
تضم C++ عائلتين من الأنواع العددية: الأعداد الصحيحة (بلا كسور، ودقيقة) والأعداد ذات الفاصلة العائمة (تقريبية، وتحتوي على كسور). اختر العائلة المناسبة للمهمة.
أنواع الأعداد الصحيحة
الأنواع الصحيحة المضمنة والأحجام المعتادة على الأنظمة ذات 64 بت:
char— بايت واحدshort— بايتانint— 4 بايتاتlong— 4 أو 8 بايتاتlong long— 8 بايتات
الموقعة مقابل غير الموقعة
أضف unsigned لإزالة النطاق السالب. تلتف الحسابات غير الموقعة حول نفسها وفقًا لباقي القسمة على 2^N — وقد يكون ذلك مفيدًا أحيانًا، لكنه غالبًا ما يكون مصدرًا للأخطاء.
unsigned int u = 0;
u -= 1; // wraps around to 4,294,967,295الأعداد الصحيحة ذات العرض الثابت
استخدم الأنواع الموجودة في <cstdint> عندما تحتاج إلى أحجام دقيقة — مثل البروتوكولات أو تنسيقات الملفات أو قابلية النقل بين المنصات.
#include <cstdint>
int8_t tiny = 100;
int32_t word = 100000;
int64_t big = 1LL << 40;
uint64_t huge = 18446744073709551615ULL;أنواع الفاصلة العائمة
ثلاثة أنواع للفاصلة العائمة بترتيب متزايد من حيث الدقة:
float— 32 بت، ونحو 7 أرقام عشريةdouble— 64 بت، ونحو 15 رقمًا عشريًاlong double— عادةً 80 أو 128 بت
تنسيق IEEE 754
تتبع قيم الفاصلة العائمة معيار IEEE 754: الإشارة والأسّ والجزء العشري. ويمكنها تمثيل قيم كبيرة جدًا وصغيرة جدًا، لكنها لا تمثلها بدقة تامة.
مخاطر الفاصلة العائمة
لا يمكن تمثيل معظم الأعداد العشرية بدقة في النظام الثنائي. فالقيمة 0.1 + 0.2 لا تساوي 0.3 تمامًا.
double sum = 0.1 + 0.2;
std::cout << (sum == 0.3); // false on most systems
std::cout << sum; // 0.3 but printed approximatelyمقارنة قيم الفاصلة العائمة بأمان
لا تقارن قيم الفاصلة العائمة باستخدام == مطلقًا. قارنها ضمن هامش سماح صغير (إبسيلون).
bool approxEqual(double a, double b, double eps = 1e-9) {
return std::abs(a - b) < eps;
}القيم الخاصة للفاصلة العائمة
للقيم ذات الفاصلة العائمة ثلاث قيم خاصة: NaN (ليست عددًا)، و+inf، و-inf. استخدم الاختبارات الموجودة في <cmath> للتحقق منها.
#include <cmath>
double x = std::sqrt(-1.0);
if (std::isnan(x)) std::cout << "Not a number";
if (std::isinf(x)) std::cout << "Infinity";متى تستخدم كل نوع؟
اختر النوع وفقًا للمجال:
- العدادات والفهارس →
intأوsize_t - الرياضيات العلمية أو الرسومية →
double - المال → لا تستخدم
doubleمطلقًا! استخدم أعدادًا صحيحة مُقاسة (بالسنتات) أو مكتبة عشرية
تختلف أحجام الأنواع حسب المنصة
تضمن المعايير أحجامًا دنيا فقط. قد يكون int بعرض 16 أو 32 أو 64 بت. ولتحقيق قابلية النقل، استخدم الأنواع ذات العرض الثابت من <cstdint> في هياكل البيانات.
تحقق سريع
أي نوع ينبغي استخدامه لتمثيل القيم المالية بدقة؟
مراجعة
الأعداد الصحيحة دقيقة، أما قيم الفاصلة العائمة فتقريبية. اختر int أو الأعداد الصحيحة ذات العرض الثابت للعدادات، وdouble للرياضيات العلمية، ولا تستخدم قيم الفاصلة العائمة للمال مطلقًا. قارن قيم الفاصلة العائمة بهامش سماح، وليس باستخدام == مطلقًا.
الأسئلة الشائعة
هل درس «الأنواع الصحيحة مقابل أنواع الفاصلة العائمة» مجاني؟
نعم — نص درس «الأنواع الصحيحة مقابل أنواع الفاصلة العائمة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.
ماذا ستتعلم في «الأنواع الصحيحة مقابل أنواع الفاصلة العائمة»؟
اختر النوع الرقمي المناسب بفهم الأحجام والنطاقات والمفاضلات المتعلقة بالدقة. تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟
لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «الأنواع الصحيحة مقابل أنواع الفاصلة العائمة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟
نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الأنواع الصحيحة مقابل أنواع الفاصلة العائمة
- الترويسة cmath: pow وsqrt وabs وround
- الأعداد العشوائية باستخدام الترويسة random
- الحدود الرقمية وسلوك تجاوز السعة