ورود

View Full Version : سوال: منظور از NaN چیست ؟ چرا Exepetion Error نمیدهد ؟ صفر double صفر حدی است و صفر int صفر مطلق ؟



a.seieddokht
پنج شنبه 20 تیر 1392, 18:20 عصر
سلام ممنون میشم جواب بدید من مبتدی هستم دوست دارم بدونم که چرا تو محاسبات اشتباه بعضی جاها Exception Error نمیده و خروجی NaN , infinity میده مثل زیر


public class Main {

public static void main(String[] args) {

System.out.println(Math.pow(-4,0.5)); //print NaN
System.out.println(1 / 0.0); //print infinity
}
}

httplistener
جمعه 21 تیر 1392, 21:42 عصر
سلام ممنون میشم جواب بدید من مبتدی هستم دوست دارم بدونم که چرا تو محاسبات اشتباه بعضی جاها Exception Error نمیده و خروجی NaN , infinity میده مثل زیر


public class Main {

public static void main(String[] args) {

System.out.println(Math.pow(-4,0.5)); //print NaN
System.out.println(1 / 0.0); //print infinity
}
}



سلام.
ببینید در رابطه با اولی خب این بستگی داره به اینکه متد pow چگونه پیاده شده،خوب اگرچه به نظر شما این محاسبات اشتباه هستند شاید از نظر من اینگونه نباشند ؛ شاید اگر بنده میخواستم این متد رو تعریف بکنم دلم میخواست متد به اینگونه باشه که بازه اعداد مختلط رو هم در نظر بگیره (و مثلا خروجیش میتونست از یک نوع دیگه باشه) و در نتیجه جواب 2i رو برگردونه،و شما می تونید متدی بسازید که در این موراد استثناء ایجاد کنه، .به نظر بنده این مساله زیاد مهمی نیست و نمیشه اون رو به زبان جاوا نسبت داد.بلکه صرفا میشه درمورد متد pow حرف زد.
اما در رابطه با دومی خوب اینجا با متد سر و کار نداریم و شاید شما بگید باید یک استثنا رخ بده و شاید من نوعی هم بگم باید نه یک خطای ران تایم بلکه یک Compilation Error داشته باشیم (اگر هم حطایی رخ بده به نظر این معقولتر هست چون مقادیر بالا و پایین کسر ثابت هستند) اما باید دقت بکنیم که در موارد علمی وقتی می گوییم 0 یعنی 0 مطلق اما وقتی می گوییم 0.0 این یعنی مقدار دقیقا صفر نیست و می تونه به مقدار epsilon با 0 تفاوت داشته باشه،و این یعنی بخش کردن 1 به یک مقدار که قدر مطلق آن بینهایت کوچک هست.و این یعنی حاصل محاسبه روی کاغذ باید بشود بینهایت یا infinity.

پیروز باشید

a.seieddokht
جمعه 21 تیر 1392, 22:09 عصر
خیلی ممنون سپاس فراوان خوب توضیح دادید این رو میدونستم ولی شک داشتم ممنون :تشویق::لبخندساده::چشمک:

httplistener
جمعه 21 تیر 1392, 22:26 عصر
خیلی ممنون سپاس فراوان خوب توضیح دادید این رو میدونستم ولی شک داشتم ممنون :تشویق::لبخندساده::چشمک:


خواهش میکنم:لبخندساده: راستی NaN یعنی not a number

کامروا باشید