The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.
VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.
الأنواع التي تحتوي على أرقام ذات أماكن عشرية - float، double
غالبًا ما تسمى أنواع البيانات هذه بأنواع بيانات الفاصلة العائمة. تتم الإشارة إلى الأرقام كأرقام الفاصلة العائمة .
تعويم ففار = 50.15؛ دفار مزدوج = 50.0;
مقارنة أنواع البيانات ذات النقطة العائمة - float و double
يتعلق الاختلاف بين نوع البيانات العائمة والمزدوجة بالدقة في عدد المنازل العشرية.
بناءً على مواصفات VexOS – ARM 7، يمكن للطفو التعامل مع 6 أو 7 أماكن، ويمكن للمزدوج التعامل مع 15 أو 16 مكانًا.
float: في نظام التشغيل V5os الحالي، يبدو أن وحدة التحكم تسمح بما يصل إلى 8 منازل عشرية من الدقة.
على سبيل المثال
تعويم fvar1 = 1.12345670؛ تعويم fvar2 = 1.12345678;
fval1 يختلف عن fvar2
ضد
تعويم fvar1 = 1.123456780؛ تعويم fvar2 = 1.123456781;
سيتم تقييم fval1 بنفس تقييم fvar2.
مزدوج: يسمح بما يصل إلى 17 منزلة عشرية من الدقة.
على سبيل المثال
مزدوج dvar1 = 1.12345678912345678؛ مزدوج dvar2 = 1.12345678912345670;
يختلف dval1 عن dvar2،
ضد
مزدوج dvar1 = 1.123456789123456789؛ مزدوج dvar2 = 1.123456789123456780;
سيتم تقييم dval1 بنفس تقييم dvar2.
لا تستخدم "double" إلا إذا كنت بحاجة إلى دقة عالية
هناك سببان يمنعانك من استخدام "مزدوج" إلا إذا كنت بحاجة إلى دقة عالية:
- يستغرق الأمر 2X من النوع العائم.
- يستغرق قوة معالجة أعلى بكثير.
بناءً على مواصفات VexOS – ARM 7، يمكن للطفو أن يقوم بـ 6 أو 7 أماكن، ويمكن للدوبل التعامل مع 15 أو 16 مكانًا. وفي كلتا الحالتين، يجب ألا تعتمد على دقة الأرقام الأخيرة المزدوجة أو العائمة. يتم تخزينه بشكل مختلف تمامًا عن تخزين "int" نظرًا لما يسمى "حساب النقطة العائمة" (وهو خارج نطاق هذه المقالة).
وبالتالي، قد تفقد الدقة في المنازل العشرية القليلة الأخيرة.
تعتبر العملية على المضاعفة مكلفة للغاية مقارنة بالعملية العائمة، وهي أعلى بكثير من "العدد الصحيح" بسبب ما يسمى بحسابات الفاصلة العائمة.
استنادًا إلى معيار IEEE، يقع ما يلي ضمن نطاق أكثر موثوقية.
| يكتب | أصغر قيمة إيجابية | أكبر قيمة إيجابية | # الدقة |
|---|---|---|---|
| يطفو | 10 -38 × 1.17549 | 10 38 × 3.40282 | 6 أرقام |
| مزدوج | 10 -308 أو 2.22507 | 10 308 × 1.79769 | 15 رقما |
هل يمكنك تبادل أنواع البيانات البدائية؟ - الصب
من الممكن تبادل أنواع البيانات. هذه التقنية تسمى "الصب". على الرغم من أن الإلقاء هو ممارسة شائعة إلى حد ما، فلا تفعل ذلك إلا إذا كان ذلك ضروريًا.
أحد الممارسات الأكثر شيوعًا هو تبادل char و int.
وذلك لأن كلاهما يمثل قيمًا صحيحة مع استثناء واحد:
- يحتوي "int" على 4 بايت (أو 8 بايت في بعض المترجمات)
- يحتوي "char" على بايت واحد فقط.
لذلك، على سبيل المثال
شار أفال = 100؛ int iVal = aVal; // صب ضمني
أو
int iVal = (char) aVal; // صب صريح.
الحذر من الاقتطاع الضمني:
على سبيل المثال
ممارسة شائعة أخرى هي تبادل int و float
تعويم fVal = 5.486؛ جزء عائم = fVal - (int)fVal; // يفعل: 5.486 - 5
الحذر من الاقتطاع الضمني:
على سبيل المثال
إنت آي فال = 50؛ تعويم fVal = iVal / 100؛
الآن fVal = 0.0، وليس 0.5.
من الجيد تمامًا الاستفادة من الاقتطاع الضمني، والذي غالبًا ما يكون جزءًا مهمًا من العمليات في بعض السيناريوهات. ومع ذلك، تحتاج إلى التأكد من أنك تستخدم هذه التقنية حسب التصميم.
إذا كنت لا ترغب في حدوث الاقتطاع الضمني، فأنت بحاجة إلى إجراء عملية تحويل صريحة:
- الصب الضمني:
float fVal = iVal / 100.0؛ - صب صريح:
float fVal = (float) iVal / 100