نوعدادهی float در آردوینو برای ذخیرهسازی اعداد ممیز شناور (اعدادی که ممیز یا نقطه اعشار دارند) است. معمولاً از اعداد ممیز شناور برای تقریب زدن مقادیر آنالوگ و پیوسته استفاده میشود؛ چراکه این نوع اعداد دقت بیشتری از اعداد صحیح (integers) دارند.
اعداد ممیز شناور میتوانند به بزرگی 3.4028235E+38 و به کوچکی 3.4028235E+38- باشند. این نوعداده 32 بیت (4 بایت) اطلاعات را در خود ذخیره میکند.
floatها 7-6 عدد دهدهی دقت دارند؛ یعنی کل عدد، این تعداد رقم دارد، نه تعداد ارقام سمت راست اعشار. برعکس دیگر زبانها که برای افزایش دقت (بهعنوانمثال تا 15 رقم) میتوان از نوعدادهی double استفاده کرد، در آردوینو، double نیز هماندازهی float است.
اعداد ممیز شناور، دقیق نیستند و ممکن است هنگام مقایسه، نتایج عجیبی تولید کنند. برای مثال حاصل 6.0/3.0 ممکن است برابر با 2.0 نشود. به جای اینکار باید چک کنید که مقدارِ مطلقِ تفاضلِ بین اعداد، کمتر از عددی کوچک باشد.
در انجام محاسبات، اعداد ممیز شناور بسیار آهستهتر (زمانبرتر) از محاسبات اعداد صحیح هستند. پس اگر بهعنوانمثال برای یک کار حیاتی از نظر زمان، حلقهای دارید که باید با نهایت سرعت اجرا شود، از اعداد ممیز شناور استفاده نکنید. معمولاً برنامهنویسان برای افزایش سرعت، اعداد ممیز شناور را به اعداد صحیح تبدیل میکنند.
اگر میخواهید با اعداد ممیز شناور محاسبات انجام دهید، باید یک ممیز قرار دهید؛ وگرنه عدد بهعنوان int در نظر گرفته خواهد شد. برای جزییات بیشتر صفحهی ثابتهای ممیز شناور را ببینید.
مثال:
1 2 | float myfloat; float sensorCalbrate = 1.117; |
سینتکس (نحو):
1 | float var = val; |
- var: نام متغیرِ از نوع float.
- val: مقداری که به متغیر نسبت میدهید.
کد نمونه:
1 2 3 4 5 6 7 8 9 10 | int x; int y; float z; x = 1; y = x / 2; //متغیر وای مقدار 0 را در خود دارد. متغیرهای از نوع عدد صحیح (اینت) نمیتوانند در خود کسر نگه دارند. z = (float)x / 2.0; // باید از دو ممیز صفر استفاده کنید. نه دو //متغیر زد مقدار نیم را در خود دارد. |
سلام خسته نباشد
ميخاستم از ورودي آنالوگ مثلا يك سنسور استفاده كنم و مقدار ورودي اين سنسور خيلي برام مهمه.ولي همش 2 يا 3 رقم اعشارو نشون ميده كه اونم خيلي بالا پايين ميشه وثابت نيست .آيا ميشه تا يك رقم اعشارو از اين ورودي آنالوگ خوند و دريافت كرد.؟؟؟فقط تا يك رقم اعشار
با تشكر
سلام دوست عزیز
اعداد ممیز شناور در واقع به شکل ۴ بایت از حافظه رو اشغال میکنن و این که بگید با فلان مقدار اعشار بخونم در واقع معنی درستی نمیده
کاری که میتونید انجام بدید اینه که با یک رقم اعشار نمایش بدید که توی حوزه بندی دستور printf میتونید جزییاتش رو ببینید.
اگر پرش روی نمونه ها دارید میتونید از داده های دریافتی میانگین گیری کنید تا پرش ها کمتر شوند
سپاس
بدردم خورد
خواهش میکنیم