PDA

View Full Version : چهار عمل اصلی بر روی دو عدد در #c



C# Student
شنبه 07 اردیبهشت 1392, 01:21 صبح
با سلام.
چرا توی برنامه زیر حاصل " تقسیم" به صورت عدد حقیقی به نمایش در میاد؟
من "تقسیم" رو با متد Double و Float امتحان کردم ولی حاصل تقسیم بهصورت عدد حقیقی نمایش داده میشه. دلیلش چیه؟
یا بهتر بگم اشکال برنامه زیر چیه ؟

ممنون.
کد:


class Program
{
static void Main(string[] args)
{
int number1, number2, jam, tafrigh, zarb, baghimande;
float taghsim;
Console.WriteLine(" Enter Your First Integer Number ");
number1 = Int32.Parse(Console.ReadLine());
Console.WriteLine(" Enter Your Second Integer Number ");
number2 = Int32.Parse(Console.ReadLine());
jam = number1 + number2;
tafrigh = number1 - number2;
zarb = number1 * number2;
taghsim = number1 / number2;
baghimande = number1 % number2;
Console.WriteLine(number1 + " + " + number2 + " = " + jam);
Console.WriteLine(number1 + " - " + number2 + " = " + tafrigh);
Console.WriteLine(number1 + " * " + number2 + " = " + zarb);
Console.WriteLine(number1 + " / " + number2 + " = " + taghsim);
Console.WriteLine(number1 + " % " + number2 + " = " + baghimande);

}
}
}

مهدی اسماعیلی
شنبه 07 اردیبهشت 1392, 01:35 صبح
سلام،
به خاطر اینکه number1 و number2 از نوع int هستند . . .
شما مثلا number1 را عدد 2.5 وارد میکنید ، اما داخل number1 عدد 2 قرار میگیره . . . .
بهتره بقیه ی متغیر ها هم از نوع float یا double بگیرید . . .
موفق باشید ../.

مهدی اسماعیلی
شنبه 07 اردیبهشت 1392, 01:43 صبح
کد اصلاح شده :



float number1, number2, jam, tafrigh, zarb, baghimande;
float taghsim;
Console.WriteLine(" Enter Your First Integer Number ");
number1 = Convert.ToSingle(Console.ReadLine());
Console.WriteLine(" Enter Your Second Integer Number ");
number2 = Convert.ToSingle(Console.ReadLine());
jam = number1 + number2;
tafrigh = number1 - number2;
zarb = number1 * number2;
taghsim = number1 / number2;
baghimande = number1 % number2;
Console.WriteLine(number1 + " + " + number2 + " = " + jam);
Console.WriteLine(number1 + " - " + number2 + " = " + tafrigh);
Console.WriteLine(number1 + " * " + number2 + " = " + zarb);
Console.WriteLine(number1 + " / " + number2 + " = " + taghsim);
Console.WriteLine(number1 + " % " + number2 + " = " + baghimande);

برای تبدیل string (داده ورودی) به نوع اعشاری از متد Convert.ToSingle استفاده شده . . .

C# Student
شنبه 07 اردیبهشت 1392, 02:37 صبح
ممنون از پاسخت.
ولی یه مشکلی هست و اون اینکه مثلا من Num1 رو عدد 9 میگیرم و Num2 رو عدد 2 . من دوتا عدد رو حقیقی (Int) فرض کردم. حاصل تقسیم هم 4.5 میشه که عدد اعشاریه (Double).
چرا باید Num1 و Num2 رو Double فرض کنم؟
من میخوام تمام داده ها اعداد حقیقی باشه ولی در قسمت محاسبه "تقسیم" , اعداد رو در صورت نیاز اعشاری نشون بده.

ممنون میشم توضیح بدین..

wolf_majid
شنبه 07 اردیبهشت 1392, 07:23 صبح
نیازی نیست تمام داده های را float کنی , فقط برای ضرب بهتره long و برای تقسیم double یا float
کدت رو به صورت زیر اصلاح کن (حاصل تقسیم عدد صحیح بر عدد صحیح , صحیحه ولی اگر یکی یا هردوی آنها اعشاری باشند خروجی اعشاریه)
taghsim =(float) number1 / number2

mehrdad1991h
شنبه 07 اردیبهشت 1392, 08:35 صبح
نیازی نیست تمام داده های را float کنی , فقط برای ضرب بهتره long و برای تقسیم double یا float
کدت رو به صورت زیر اصلاح کن (حاصل تقسیم عدد صحیح بر عدد صحیح , صحیحه ولی اگر یکی یا هردوی آنها اعشاری باشند خروجی اعشاریه)
taghsim =(float) number1 / number2

ببخشید 3 تقسیم بر 2 صحیح میشه حاصلش یا اعشاری ؟

باید جملتون را اینجوری اصلاح کنید
حاصل تقسیم اعداد صحیح (فرد بر فرد) و (زوج بر زوج) عدیدی صحیح است

wolf_majid
شنبه 07 اردیبهشت 1392, 09:13 صبح
ببخشید 3 تقسیم بر 2 صحیح میشه حاصلش یا اعشاری ؟


حاصل تقسیم 3 بر 2 در صورتی که هر دو از نوع صحیح باشند میشه 1 (صحیح) نه 1.5 (اعشاری)


باید جملتون را اینجوری اصلاح کنید
حاصل تقسیم اعداد صحیح (فرد بر فرد) و (زوج بر زوج) عدیدی صحیح است
منطقا" اینطوری نیست
به مثال زیر توجه کنید
17/7؟
منطق میگه میشه اعشاری و جواب : 2.4
ولی کامپایلر سی شارپ از اونجایی که هر دو صحیح تعریف شده اند فقط میدونه باید خروجی صحیح برگردونه (براش تعریف شده) پس جواب میشه 2