Arduino/float
يستعمل النوع float
مع الأعداد العشرية، وهي الأعداد الكسرية التي تُستعمَل فاصلةٌ عشريَّةٌ في تمثيلها. تُستعمَل الأعداد العشرية غالبًا لتقريب القيم التشابهية والمستمرة (continuous) لأنها تملك دقة أكبر من تلك التي تملكها الأعداد الصحيحة. يمكن أن تكون الأعداد العشرية كبيرة بكبر العدد 3.4028235E+38 وصغيرة بصغر العدد 3.4028235E+38-. يحجز النوع float
أربعة بايتات (32 بت) من الذاكرة لتخزين عدد عشري فيها.
تملك الأعداد العشرية التي من النوع float
دقة صغيرة تصل إلى 6-7 منازل عشرية بعد الفاصلة. في لوحات أردوينو Uno واللوحات الأخرى التي تعتمد على المتحكمات ATMEGA، لا يوجد دقة أعلى من هذه الدقة عبر استعمال النوع double
(عدد عشري مضاعف)، إذ حجم هذا النوع مماثل تمامًا لحجم النوع float
. أمَّا في اللوحات Due، فتتوافر دقة مضاعفة من خلال استعمال النوع double
.
إجراء عمليات حسابية على الأعداد العشرية أبطأ من بكثير من إجراء نفس العمليات على الأعداد الصحيحة، لذا يجب تَجنُّب استعمال الأعداد العشرية إذا كان التوقيت حرجًا لبعض الدوال ويُطلَب من الدالة التكرارية أن تكرر تنفيذ العمليات بأقصى سرعة وأقصر وقت ممكن. يتجنب المبرمجون عادةً تنفيذ عمليات حسابية على الأعداد العشرية ويحولون هذه العمليات ويتلاعبون بها لتُنفَّذ على الأعداد الصحيحة فقط من أجل زيادة سرعة البرنامج.
إن كان برنامجك يجري عمليات حسابية على الأعداد العشرية، فيجب أن تضيف لجميع الأعداد الثابتة المستعملة في هذه العمليات منازل عشرية بعد الفاصلة إن لم يكن لها (مثل 12.0)؛ إن لم تفعل ذلك (أي استعملت العدد 12 فقط)، فستُعامَل هذه الأعداد على أنَّها أعداد صحيحة. اطلع على صفحة الأعداد الثابتة ذات الفاصلة العشرية لمزيد من المعلومات.
البنية العامة
float var_name;
float var_name = floating_number;
أمثلة
مثالٌ على تعريف متغير من النوع 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 سيحوي المتغير