نوع داده float در آردوینو — آموزش کامل اعداد اعشاری برای مبتدی‌ها  
آردوینو ایران | آموزش تخصصی آردوینو به فارسی

آردوینو ایران | آموزش تخصصی آردوینو به فارسی

آردوینو ایران — مرجع تخصصی آموزش آردوینو به فارسی! دوره‌های کاربردی، پروژه‌محور و گام‌به‌گام برای مبتدی‌ها تا پیشرفته‌ها: از راه‌اندازی اولین LED تا ساخت ربات، IoT و سیستم‌های هوشمند خانه. یادگیری عملی، کدنویسی ساده، پشتیبانی فنی و دسترسی مادام‌العمر به محتوا — فقط برای عاشقان الکترونیک و برنامه‌نویسی سخت‌افزاری.

اشتراک در خبرنامه

جهت عضویت در خبرنامه لطفا ایمیل خود را ثبت نمائید

Captcha

آمار بازدید

  • بازدید امروز : 40
  • بازدید دیروز : 10
  • بازدید کل : 14607

نوع داده float در آردوینو — آموزش کامل اعداد اعشاری برای مبتدی‌ها


نوع داده float در آردوینو — آموزش کامل اعداد اعشاری برای مبتدی‌ها

نوع داده float در آردوینو — کار با اعداد اعشاری به ساده‌ترین شکل

float چیست؟

در آردوینو، نوع داده‌ی float برای ذخیره و کار با اعداد اعشاری (اعدادی با ممیز متحرک) استفاده می‌شود.
این نوع داده می‌تواند اعدادی در محدوده‌ی تقریبی ±3.4028235 × 10³⁸ را نگه دارد، اما فقط با دقتی حدود ۶ تا ۷ رقم معنی‌دار.

هر متغیر از نوع float دقیقاً ۴ بایت (۳۲ بیت) از حافظه‌ی RAM را اشغال می‌کند.

چرا به float نیاز داریم؟

وقتی با سنسورها کار می‌کنید، اغلب نیاز دارید مقادیری مثل دما (۲۳.۵ درجه)، ولتاژ (۳.۳ ولت) یا فاصله (۱۲.۷ سانتی‌متر) را ذخیره کنید.
اعداد صحیح (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(" ولت");

نکته طلایی ۱: float دقیق نیست! همیشه با خطا همراه است.

به دلیل محدودیت‌های نمایش اعداد اعشاری در سیستم باینری، برخی اعداد ساده مثل 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("تقریباً برابر هستند!");
}

نکته طلایی ۲: float کند است — در کدهای حساس به زمان احتیاط کنید!

تراشه‌های AVR (مثل آنچه در آردوینو Uno استفاده می‌شود) فاقد واحد پردازش اعشاری (FPU) هستند.
به همین دلیل، هر عملیات ریاضی با float چندین برابر کندتر از اعداد صحیح است.
اگر در حلقه‌ی loop() محاسبات زیادی دارید، سعی کنید از اعداد صحیح استفاده کنید — مثلاً به جای ۲۳.۵ درجه، از ۲۳۵ دهم‌درجه استفاده کنید!

تفاوت float و double در آردوینو

در آردوینو Uno/Nano/Mega (تراشه‌های AVR):
float = ۴ بایت
double = همان ۴ بایت (یعنی هیچ تفاوتی ندارد!)
اما در برد‌های ARM مثل Arduino Due:
double = ۸ بایت و دقت بالاتر دارد.
پس در AVR، همیشه از float استفاده کنید — هم خواناتر است، هم سازگاری بهتری دارد.

منبع رسمی

این مطلب بر اساس مستندات رسمی Arduino از بخش float – Language Reference تهیه شده است، با توضیحات ساده‌شده، مثال‌های کاربردی و نکات طلایی منحصربه‌فرد برای جامعه فارسی‌زبان.

  انتشار : ۱۲ مهر ۱۴۰۴               تعداد بازدید : 292

برچسب های مهم

دیدگاه های کاربران (0)

http://kia-ir.ir

تمام حقوق مادی و معنوی این وب سایت متعلق به "آردوینو ایران | آموزش تخصصی آردوینو به فارسی" می باشد

فید خبر خوان    نقشه سایت    تماس با ما