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