سی شارپ

آموزش اعداد ممیزی شناور در سی شارپ

اساطیر زبان

اعداد ممیزی شناور؛ اعدادی هستند که یک بخش اعشاری دارند (معمولاً با یک ممیز از بخش صحیح جدا می شود). شما ممکن است متعجب شوید که چرا یک نوع داده واحد برای کار با تمامی اعداد (صحیح و اعشاری) وجود ندارد؛ اما باید بدانید که برای کامپیوتر کار با اعداد صحیح نسبت به کار با اعداد اعشاری؛ بسیار سریع تر است. بنابراین متمایز کردن آنها از یکدیگر؛ می تواند بسیار معنادار باشد – اگر می دانید که در طول پروژه تان فقط با اعداد صحیح سر و کار دارید؛ باید با نوع داده های Integer کار بکنید.

در غیر این صورت؛ از نوع داده های ممیز شناور استفاده نمایید که روش کار با آنها در مقاله زیر آمده است:

استفاده از یک مقدار ممیز شناور به سادگی استفاده از یک مقدار عدد صحیح است؛ البته در مورد کار با اعداد ممیز شناور؛ تا حدودی نگرانی های بیشتری وجود دارد که در ادامه به آنها خواهیم پرداخت. اکنون؛ اجازه دهید بررسی کنیم که هنگام بیان یکی از متداول ترین داده های ممیز شناور یعنی double کد نویسی به چه صورت در می آید.

double number;

دقیقاً مشابه یک عدد صحیح؛ می توانید همزمان با بیان کردن آن؛ یک مقدار را نیز به آن اختصاص دهید:

double number = 42.0;

روند کد نویسی برای اعداد ممیز شناور و اعداد اعشاری یکسان می باشد؛ با این تفاوت که علامت آنها کمی متفاوت است:

double doubleVal = 42.0;
float floatVal = 42.0f;
decimal decimalVal = 42.0m;

توجه کنید که “f” و “m” بعد از اعداد؛ به ترتیب به کامپایلر اعلام می کند که می خواهیم یک عدد شناور (Float) یا یک عدد اعشاری را معرفی و مقدار دهی کنیم. بدون آن سی شارپ اعداد را به صورت double تفسیر می کند که نمی تواند به صورت خودکار به یک عدد شناور یا اعشاری تبدیل شود.

اعداد double، float یا decimal؟

کار با اعداد ممیزی شناور (float) در برنامه نویسی همیشه باعث ایجاد شدن سؤالات و نگرانی های زیادی می شود. برای مثال؛ سی شارپ حداقل سه نمونه داده برای کار برای اعداد غیر صحیح دارد:

  • float ( نام مستعار برای System.Single)
  • double (نام مستعار برای System.Double)
  • decimal (نام مستعار برای System.decimal)

ممکن است درک تفاوت برجسته بین این سه نوع داده کمی دشوار باشد؛ مگر این که شما درمورد نحوه ی عملکرد داخلی کامپیوتر دانش زیادی داشته باشید؛ بنابراین؛ بیایید به موارد کاربردی تر در اینجا بپردازیم.

به طور کلی ، تفاوت بین float ، double و decimal در دقت حاصل کار و میزان حافظه ای است که برای ذخیره آنها به کار می رود. float ابتدایی ترین آنها است- می تواند عددی را با حداکثر ۷ رقم نشان دهد. double دقیق تر است و دارای حداکثر ۱۶ رقم است، در حالی که decimal دقیق ترین است و حداکثر آن عدد ۲۹ رقم است.

شاید تعجب کنید که چرا باید به آن همه دقت نیاز پیدا کنید، اما پاسخ این سؤال به “مسائل ریاضی” باز می گردد. مثال کلاسیک برای درک تفاوت دقت این روش ها، تقسیم ۱۰ به ۳ است. اکثر ما این کار را در ذهن خود انجام می دهیم و می گوییم نتیجه ۳٫۳۳ است ، اما بسیاری از مردم نیز می دانند که پاسخ کاملاً دقیق نیست. پاسخ واقعی ۳٫۳۳ است به صورتی که تعداد زیادی ۳ نیز در بخش اعشاری وجود دارد – این که چه تعداد از این ۳ ها هنگام انجام این محاسبه با سی شارپ به دست می آید، توسط نوع داده مشخص می شود. این مثال را ببینید:

float a = 10f / 3;
Console.WriteLine(a);
double b = 10d / 3;
Console.WriteLine(b);
decimal c = 10m / 3;
Console.WriteLine(c);

من دقیقاً همین محاسبات را با انواع متفاوت داده ها انجام می دهم؛ نتیجه مشابه زیر خواهد بود:

a: 3.333333
b: 3.33333333333333
c: 3.3333333333333333333333333333

تفاوت تقریباً واضح است؛ اما سؤال این است که برای انجام نوعی از محاسبات؛ چقدر دقت نیاز دارید؟

چگونه انتخاب کنیم؟

قبل از هر چیز؛ باید بدانید آن اعدادی که به کار می برید؛ می خواهید چند رقم باشند. یک عدد از نوع float می تواند تنها ۷ رقم را بپذیرد؛ بنابراین؛ اگر نیاز به اعدادی بزرگ تر از این دارید؛ ممکن است بخواهید به سراغ double یا decimal بروید.

دوم این که هر دو نوع float و double مقداری را ارائه می دهند که تقریبی از مقدار حقیقی است – به عبارت دیگر؛ ممکن است مقایسه نتیجه با مقدار واقعی تا آخرین رقم صحیح نباشد. این بدان معناست که وقتی شروع به انجام محاسبات بیشتری با این متغیرها می کنید ، ممکن است دیگر خیلی دقیق نباشند ، که در اصل بدان معنی است که دو مقداری که باید برابر باشند ، به طور ناگهانی دیگر مساوی نمی شوند.

بنابراین ، برای موقعیت هایی که دقت نگرانی اصلی تان است، باید با نوع decimal پیش بروید. یک مثال عالی برای استفاده از اعداد decimal، نشان دادن ارقام مالی (پول) است – شما نمی خواهید یک عدد ده رقمی را در دفتر حسابداری خود اضافه کنید، بلکه برای دقت بیشتر از این نوع استفاده می کنید. از طرف دیگر ، اگر عملکرد کد نویسی برای تان از اهمیت بیشتری برخوردار باشد، باید با float (برای اعداد کوچک) یا double (برای اعداد بزرگتر) پیش بروید. نوع decimal به دلیل این که دقت بیشتری دارد، بسیار کندتر از یک float است – بعضی از آزمایشات نشان می دهد که تا ۲۰ برابر کندتر است!

خلاصه

زمانی که می خواهید با مقادیر ممیزی شناور کار کنید؛ هنگامی که دقت از اهمیت کمتری نسبت به عملکرد برخودار است؛ باید از نوع داده های float یا double استفاده کنید. از سوی دیگر؛ اگر ماکزیمم مقدار دقت را می خواهید و سطح پایین تری از عملکرد را می پذیرید؛ شما باید با نوع decimal کار کنید -به خصوص زمانی که با ارقام مالی کار می کنید-

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست