سلام
چرا cast نمیکنه به double ??????
sum += d * (double)(4/x) ;
اگر پرانتز بردارم درست میشه
sum += d * (double)4/x ;
سلام
چرا cast نمیکنه به double ??????
sum += d * (double)(4/x) ;
اگر پرانتز بردارم درست میشه
sum += d * (double)4/x ;
سلام
نوع داده sum که قرار دادید نباید چیزی به غیر از double باشد و اگر هست یک cast دیگر نیاز دارید
سلام
نیست.همان double است. گیر تو پرانتز است وقتی بزارم دیگه اعشار نمیزنه
در حالت اول 4(سمت چپ تقسیم) عدد صحیحه پس حاصل تقسیم عدد صحیح خواهد بود. باید به طریقی 4 رو به عنوان عدد اعشاری بشناسانی که در حالت دوم 4 به double تبدیل میشه و حاصل تقسیم هم double خواهد شد.
من فکر میکنم در حالت اول کامپایلر درگیر مباحث تقدم عملگر ها میشه که از این دو پرانتز سمت چپ ترین پرانتز اول اجرا میشه و چون هیچ عددی بعد از پرانتز وجود نداره کاری از پیش نمیبره و در پرانتز دوم 4 تقسیم بر عدد صحیح میشه که نتیجه یه عدد صحیح خواهد بود و مسلما sum هم مقدار صحیح به خودش میگیره ولی در حالت دوم کاملا درسته 4 تبدیل به 4.00 میشه و نتیجه هم درست خواهد بود.
اگر اشتباه فکر میکنم دوستان اصلاح کنند...
ممنو ن این جی؟
p =Math.Pow(i,2);
بهم میگه دابل نمیتونم به int تبدیل کنم! بالای سر این دستور هم یک حلقه فور گذاشتم.مگر توان به اعشار هم میرسه؟
for (int i = 1; i <= 500; i++)
{
p = Math.Pow(i,2);
علتش به خاطر اینه که متغییر p از نوع int هست ولی ورودی هایی که تابع pow میگیره به صورت double دریافت میشه و نتیجه هم به صورت double برگردونده میشه و چون شما دارید نتیجه رو داخل متغییری از نوع int قرار میدید خطا میگیره...
باید حدس بزنیم Type هایی که استفاده کردی چیه ؟ (خوب یک تیکه کد کامل قرار بده)
آخرین ویرایش به وسیله Mahmoud.Afrad : دوشنبه 07 مرداد 1392 در 22:03 عصر