Arduino/float

من موسوعة حسوب
< Arduino
مراجعة 11:21، 25 أكتوبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (أنشأ الصفحة ب'يستعمل النوع <code>float</code> مع الأعداد العشرية، وهي الأعداد الكسرية التي تُستعمَل فاصلةٌ عشريَّ...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

يستعمل النوع 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 سيحوي المتغير

انظر أيضًا

مصادر