
در آردوینو، نوع دادهی float برای ذخیره و کار با اعداد اعشاری (اعدادی با ممیز متحرک) استفاده میشود.
این نوع داده میتواند اعدادی در محدودهی تقریبی ±3.4028235 × 10³⁸ را نگه دارد، اما فقط با دقتی حدود ۶ تا ۷ رقم معنیدار.
هر متغیر از نوع float دقیقاً ۴ بایت (۳۲ بیت) از حافظهی RAM را اشغال میکند.
وقتی با سنسورها کار میکنید، اغلب نیاز دارید مقادیری مثل دما (۲۳.۵ درجه)، ولتاژ (۳.۳ ولت) یا فاصله (۱۲.۷ سانتیمتر) را ذخیره کنید.
اعداد صحیح (int) نمیتوانند بخش اعشاری را نگه دارند، پس باید از float استفاده کنیم.
float temperature = 23.45;
float voltage = 3.3;
float pi = 3.14159;
شما میتوانید عملیات ریاضی معمولی را روی اعداد float انجام دهید:
float a = 5.2;
float b = 2.1;
float sum = a + b; // نتیجه: 7.3
float product = a * b; // نتیجه: 10.92
پینهای آنالوگ آردوینو مقداری بین ۰ تا ۱۰۲۳ برمیگردانند. برای تبدیل آن به ولتاژ واقعی (مثلاً برای نمایش روی سریال مانیتور)، از float استفاده میکنیم:
const float REF_VOLTAGE = 5.0; // ولتاژ مرجع آردوینو
int sensorRaw = analogRead(A0);
float voltage = sensorRaw * (REF_VOLTAGE / 1023.0);
Serial.print("ولتاژ اندازهگیری شده: ");
Serial.print(voltage);
Serial.println(" ولت");
به دلیل محدودیتهای نمایش اعداد اعشاری در سیستم باینری، برخی اعداد ساده مثل 0.1 را نمیتوان دقیقاً ذخیره کرد.
مثلاً این کد را امتحان کنید:
float x = 0.1 + 0.2;
Serial.println(x, 10); // خروجی: 0.3000000119 — نه 0.3 دقیق!
بنابراین، هرگز برای مقایسهی دو عدد float از == استفاده نکنید. به جای آن، اختلاف آنها را بررسی کنید:
float a = 0.1 + 0.2;
float b = 0.3;
if (abs(a - b) < 0.0001) {
Serial.println("تقریباً برابر هستند!");
}
تراشههای AVR (مثل آنچه در آردوینو Uno استفاده میشود) فاقد واحد پردازش اعشاری (FPU) هستند.
به همین دلیل، هر عملیات ریاضی با float چندین برابر کندتر از اعداد صحیح است.
اگر در حلقهی loop() محاسبات زیادی دارید، سعی کنید از اعداد صحیح استفاده کنید — مثلاً به جای ۲۳.۵ درجه، از ۲۳۵ دهمدرجه استفاده کنید!
در آردوینو Uno/Nano/Mega (تراشههای AVR):
— float = ۴ بایت
— double = همان ۴ بایت (یعنی هیچ تفاوتی ندارد!)
اما در بردهای ARM مثل Arduino Due:
— double = ۸ بایت و دقت بالاتر دارد.
پس در AVR، همیشه از float استفاده کنید — هم خواناتر است، هم سازگاری بهتری دارد.
این مطلب بر اساس مستندات رسمی Arduino از بخش float – Language Reference تهیه شده است، با توضیحات سادهشده، مثالهای کاربردی و نکات طلایی منحصربهفرد برای جامعه فارسیزبان.
برچسب های مهم