ورود

View Full Version : مبتدی: چرا حاصل تقسیم دو عدد صحیح در جاوا مشکل داره و همیشه صفر میشه



[younes]
دوشنبه 27 بهمن 1393, 11:37 صبح
نمی فهمم چرا حاصل تقسیم دو عدد صحیح که یقینا باید یه عدد اعشاری باشه رو صفر یا عدد صحیح نشون میده؟



int x=3;
int y=5;
double z= x/y;

ehsan_faal
دوشنبه 27 بهمن 1393, 12:16 عصر
دقیقا همین چند خط رو من تو اکلیپس تست کردم و حاصل 1.0 بود، نه صفر .
اگه منظورتون اینه که چرا اعشار نداره خب فکر میکنم باید قبل از تقسیم cast کنید.
البته اگه درست گفته باشم:متفکر:

Sina.iRoid
دوشنبه 27 بهمن 1393, 12:38 عصر
خب گاهی اوقات عدد کمتر از یک میشه و چون عدد صحیح هست، فقط مقداره صحیح که صفر هست و نشون میده. اما در مورد عدد های بالا جواب یک میشه.

vahid-p
دوشنبه 27 بهمن 1393, 12:40 عصر
جواب تقسیم 1 هست چرا که اول نتیجه تقسیم صحیح انجام میشه و بعد نتیجه در متغیر اعشاری قرار میگیره. وقتی دو طرف عمل تقسیم صحیح باشند، تقسیم صحیح انجام میشن. برای اینکه تقسیم اعشاری انجام بشه، لااقل یک طرف تقسیم باید اعشاری باشه. حالا یا متغیر از نوع اعشاری باشه، یا هم با casting که دوستمون گفتن اینکار رو انجام بدید. مثلا :

double z=(double)(x)/y;
اینجا x به صورت موقت به عنوان اعداد اعشاری محاسبه میشه و تقسیم از نوع اعشاری خواهد بود.

v2hid_93
چهارشنبه 29 بهمن 1393, 22:19 عصر
سلام
چون x,y هر دو از نوع عدد صحیح هستند یعنی int
و حاصل تقسیم 2عدد صحیح یک عدد صحیح میشه
چون حاصل تقسیم 3/5 یک عدد صحیح نمیشه و کمتر از هست 0 برمیگردونه
برای رفع مشکل یکیشونو double بگیر یا هنگام تقسیم تبدیل کن یکی رو به دابل مثلا
double z=x*1.0/y درست نشون میشه
چون x رو به اعشاری تبدیل میکنه و بعد حاصل اعشاری به صحیح میشه اعشاری و نتیجه درستو میده:لبخندساده: