النوع float في أردوينو

من موسوعة حسوب
< Arduino
مراجعة 14:54، 26 أكتوبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (إضافة محتويات الصفحة.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

يستعمل النوع float مع الأعداد العشرية، وهي الأعداد الكسرية التي تُستعمَل فاصلةٌ عشريَّةٌ في تمثيلها. تُستعمَل الأعداد العشرية غالبًا لتقريب القيم التشابهية والمستمرة (continuous) لأنَّها تملك دقة أكبر من تلك التي تملكها الأعداد الصحيحة. يمكن أن تكون الأعداد العشرية كبيرة بكبر العدد 3.4028235E+38 وصغيرة بصغر العدد 3.4028235E+38-. يحجز النوع float أربعة بايتات (32 بت) من الذاكرة لتخزين عدد عشري فيها.

تملك الأعداد العشرية التي من النوع float دقة صغيرة تصل إلى 6-7 منازل عشرية بعد الفاصلة. في لوحات أردوينو Uno واللوحات الأخرى التي تعتمد على المتحكمات ATMEGA، لا يوجد دقة أعلى من هذه الدقة عبر استعمال النوع double (عدد عشري مضاعف)، إذ حجم هذا النوع مماثل تمامًا لحجم النوع float. أمَّا في اللوحات Due، يوفِّر النوع double دقة مضاعفة.

إجراء عمليات حسابية على الأعداد العشرية أبطأ من بكثير من إجراء نفس العمليات على الأعداد الصحيحة، لذا يجب تَجنُّب استعمال الأعداد العشرية إذا كان التوقيت حرجًا لبعض الدوال ويُطلَب من الدالة التكرارية أن تكرر تنفيذ العمليات بأقصى سرعة وأقصر وقت ممكن. يتجنب المبرمجون عادةً تنفيذ عمليات حسابية على الأعداد العشرية ويحولون هذه العمليات ويتلاعبون بها لتُنفَّذ على الأعداد الصحيحة فقط من أجل زيادة سرعة البرنامج.

إن كان برنامجك يجري عمليات حسابية على الأعداد العشرية، فيجب أن تضيف لجميع الأعداد الثابتة المستعملة في هذه العمليات منازل عشرية بعد الفاصلة إن لم يكن لها (مثل 12.0)؛ إن لم تفعل ذلك (أي استعملت العدد 12 فقط)، فستُعامَل هذه الأعداد على أنَّها أعداد صحيحة. اطلع على صفحة الأعداد الثابتة ذات الفاصلة العشرية لمزيد من المعلومات.

البنية العامة

float var;
float var = val;

يمثِّل var اسم المتغير المراد التصريح عنه، وتمثِّل val القيمة العددية العشرية المراد إسنادها إلى هذا المتغير.

أمثلة

مثالٌ على تعريف متغير من النوع float وتنفيذ عملية حسابية عليه:

float myfloat;
float sensorCalbrate = 1.117;

int x;
int y;
float z;

x = 1;
y = x / 2;            // القيمة 0، لأنه لا يستطيع تخزين الأجزاء العشرية y سيحوي المتغير
z = (float)x / 2.0;   // (القيمة 0.5 (انتبه للعدد 2.0 ولا تستعمل 2 فقط z سيحوي المتغير

انظر أيضًا

  • النوع array: يمثِّل مصفوفة من المتغيرات الموضوعة في وعاء واحد والتي يمكن الوصول إليها والتعامل معها عبر رقم فهرس كلٍّ منها.
  • النوع bool: يخزِّن المتغير الذي يصرَّح عنه بأنَّه من النوع bool إحدى القيمتين المنطقيَّتين التاليتين: true، أو false عبر حجز بايتٍ واحدٍ من الذاكرة فقط.
  • النوع byte: يُخزِّن عددًا عديم الإشارة بحجم 8 بت؛ أي من القيمة 0 إلى القيمة 255.
  • النوع char: يحجز بايتًا واحدًا من الذاكرة ويخزِّن فيه قيمة محرف.
  • النوع double: يحجز أربعة بايتات (32 بت) من الذاكرة فقط في لوحات أردوينو Uno (والتي تعتمد على متحكمات ATMega) أو ثمانية بايتات (64 بت) في اللوحات Due لتخزين عدد عشري فيها.
  • النوع int: يحجز حجمًا مقداره 16 بت (2 بايت) من الذاكرة في لوحات أردوينو Uno (والتي تعتمد على متحكمات ATMega) أو 32 بت (4 بايت) في لوحات أردوينو Due (والتي تعتمد على متحكمات SAMD) لتخزين عدد صحيح فيه.
  • النوع long: يحجز حجمًا كبيرًا من الذاكرة مقداره 4 بايت يستعمل لتخزين الأعداد الصحيحة التي تتسم بأنَّها طويلة.
  • النوع short: يحجز في جميع لوحات أردوينو (التي تعتمد على المتحكمات ATMega و ARM) حجمًا من الذاكرة مقداره 16 بت (2 بايت) لتخزين عدد قصير فيه.
  • النوع string: يمثِّل سلسلةً نصيةً مؤلفةً من عدة محارف مرتبطة مع بعضها بعضًا. تُستعمَل مصفوفة من المحارف لتخزين هذا النوع من البيانات واستدعائها والتعامل معها لاحقًا.
  • النوع unsigned char: يحجز حجمًا من الذاكرة مقداره 1 بايت فقط.
  • النوع unsigned int: يحجز حجمًا من الذاكرة مقداره 2 بايت في لوحات أردونيو Uno واللوحات التي تعتمد على متحكمات ATMega أو 4 بايت في لوحات أردوينو Due لتخزين عدد صحيح عديم الإشارة فيها.
  • النوع unsigned long: يحجز حجمًا كبيرًا من الذاكرة مقداره 4 بايت يُستعمَل لتخزين الأعداد الصحيحة عديمة الإشارة التي تتسم بأنَّها طويلة.
  • النوع word: يُخزِّن أعدادًا عديم الإشارة بحجم 2 بايت.

مصادر