مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

آموزش کار کردن با مقادیر بی نهایت و تعریف نشده در جاوا

چگونه با اعداد بی نهایت و تعریف نشده در جاوا کار کنیم ؟ گاهی در عملیات ریاضی پیش می‌آید که نتیجه تعریف نشده و یا بینهایت می شود. ولی معمولاً در برنامه نویسی گفته می‌شود که در این حالت برای ما استثناء پیش می‌آید و حالت بینهایت در برنامه نویسی وجود ندارد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

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

در دوره آموزش جاوا ( آموزش برنامه نویسی جاوا ) این موارد بصورت رایگان آموزش داده شده است

برای مثال ساده اگر ما یک عدد را بر صفر تقسیم کنیم نتیجه‌ای که به وجود می‌آید به خاطر اینکه مخرج کسر بسیار کوچک (صفر) است عدد ما بسیار بزرگ خواهد شد (بینهایت). یعنی عملاً داریم یک عدد را بر صفر تقسیم می‌کنیم و نتیجه بینهایت را تولید می کنیم. از طرفی اگر ما مقدار ۰ را بر ۰ تقسیم کنیم نتیجه تعریف نشده است. حال می‌خواهیم این عبارات را در زبان جاوا پیاده‌سازی کنیم و نتیجه بگیریم. برای این کار ما از نوع داده 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 را در خروجی چاپ می کند.


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات