NaN چیست؟؟
چند روز پیش داشتم روی یک کلاس کار می کردم که محاسباتی رو باید انجام می داد. تصور کردم که تمام مواردی که توی اون کلاس باید نوشته می شد، تموم شده و رفتم برای تست نهایی که اونو در اختیار دیگر همکارانم قرار بدهم... متاسفانه موقع دیباگ کردن با خطایی رو به رو شدم که می گفت این مقدار برابر NaN است!!
کلا اطلاعی ازش نداشتم حتی موقع خوندنش کلی خندیدم و از اون باتعابیری مثل نان و.... یاد کردم و به یک فان تبدیل شد ولی غافل از اینکه این NaN برای خودش کسی هست!! :D
بعد از این تحقیقات به این نتیجه رسیدم :
*در محاسبات NaN یک مقدار عدد نیست بلکه مقداری است از یک نوع داده ای که نماد یک مقدار تعریف نشده است. به خصوص در محاسبات ممیز شناوری.
*استفاده سیستماتیک از NaN ها از سال 1385 با معرفی استاندارد ممیز شناور IEEE 754 آغاز شد همراه با استفاده دیگر مقدار های بی نهایت.
*یک مقدار ثابت است.
*این مقدار حاصل صفر بر صفر است.
*این مقدار وقتی برگشت داده می شود که نتیجه عملیات تعریف نشده باشد.
تفاوت بین NaN (تعریف نشده) با Infinity (بی نهایت) :
یادمه استاد دیفرانسیل کنکورمون همیشه بین حرفاش تذکر می داد که بی نهایت (∞) با تعریف نشده (ت . ن) فرق می کنه و الان مفهوم حرفش رو با این تجربه بهتر متوجه شدم.
Infinity (∞) :
حاصل تجزیه کردن(Parse) و یا محدودیت های محاسباتی است و نماد آن برابر با ∞(به قول استادمون دو وَر پف زینتی!) مثل تقسیم 3 بر صفر.
NaN :
مثل جذر 1- .
پ. ن : برای این پست مطالب موجود در سایت های Wikipedia و MSDN و stackoverflow را ترجمه کردم و کمی از اطلاعات خودم رو بهش اضافه کردم.