Loading…

جزیره برنامه نویسی و توسعه نرم افزار

ارسال کننده: مهدی عادلی
مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.
ارسال پیام خصوصی
امتیازات این مطلب
نکته: کار کردن با مقادیر بینهایت و تعریف نشده در جاوا
سلام به Itpro‌ های عزیز. گاهی در عملیات ریاضی پیش می‌آید که نتیجه تعریف نشده و یا بینهایت می شود. ولی معمولاً در برنامه نویسی گفته می‌شود که در این حالت برای ما استثناء پیش می‌آید و حالت بینهایت در برنامه نویسی وجود ندارد. در این مطلب می‌خواهیم بگوییم که این حرف کاملاً درست نیست و می‌توان در جاهایی فهمید که نتیجه بینهایت شده است و یا نتیجه تعریف نشده است. در این مطلب با استفاده از زبان جاوا تعیین می‌کنیم که نتیجه یک عمل محاسباتی تعریف نشده و یا بینهایت شده است یا خیر. برای مثال ساده اگر ما یک عدد را بر صفر تقسیم کنیم نتیجه‌ای که به وجود می‌آید به خاطر اینکه مخرج کسر بسیار کوچک (صفر) است عدد ما بسیار بزرگ خواهد شد (بینهایت). یعنی عملاً داریم یک عدد را بر صفر تقسیم می‌کنیم و نتیجه بینهایت را تولید می کنیم. از طرفی اگر ما مقدار ۰ را بر ۰ تقسیم کنیم نتیجه تعریف نشده است. حال می‌خواهیم این عبارات را در زبان جاوا پیاده‌سازی کنیم و نتیجه بگیریم. برای این کار ما از نوع داده double استفاده می کنیم. دقت کنید که اگر شما از انواع داده صحیح استفاده کنید به مشکل برخورد می‌کنید و exception تقسیم بر صفر دریافت خواهید کرد. برای اینکه متوجه شویم که نتیجه بینهایت شده است در کلاس Double‌ در جاوا از متد isInfinite استفاده می کنیم. اگر این متد مقدار true به ما بدهد به این معنی است که نتیجه محاسبات بینهایت شده است. همچنین برای دریافتن اینکه نتیجه محاسبات تعریف نشده است از متد isNaN در کلاس Double استفاده می کنیم. در کد زیر نتیجه محاسبات بینهایت شده است:
double s1=5;
double s2=0;
double s3=s1/s2;
System.out.println(Double.isInfinite(s3));

خروجی قطعه کد بالا true خواهد بود. به این معنی که نتیجه به دست آمده بینهایت است. همچنین برای اینکه بفهمیم نتیجه تعریف نشده است مانند کد زیر عمل می کنیم:
double s1=0;
double s2=0;
double s3=s1/s2;
System.out.println(Double.isNaN(s3));

به خاطر اینکه هم صورت کسر و هم مخرج کسر صفر هستند نتیجه تعریف نشده خواهد بود که در کد بالا این اتفاق مشاهده می‌شود و نتیجه کد بالا مقدار true را در خروجی چاپ می کند.
ITPRO باشید.

نویسنده: مهدی عادلی فر
منبع: Itpro
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.


دیدگاه ها

هیچ دیدگاهی برای این مطلب ارسال نشده است

برای ارسال نظر وارد شوید.

Countdown