PDA

View Full Version : مبتدی: راهنمایی در تبدیل انواع



fanoudi
یک شنبه 09 شهریور 1393, 21:22 عصر
سلام دوستان؛ بنده یک برنامه ساده می نویسم که در جه سانتی گراد رو به فارنهایت تبدیل کنه دقیقا این متن رو از یک کتاب گرفتم اما چرا در هنگام که اعشاری می نویسم برنامه به دستور


f = Convert.ToInt32(textBox2.Text);
گیر میده ، وحتی داده صحیح هم که تایپ می کنم نتیجه اش صفر میشه اما خطا نمیده! در واقع تفننی برای یک سری از کار ها مورد نیاز از سی شارپ استفاده می کنم


namespace tax
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


private void button2_Click(object sender, EventArgs e)
{
this.Close();
}


private void button1_Click(object sender, EventArgs e)
{
float c, f;
f = Convert.ToInt32(textBox2.Text);
c = (5 / 9 )* (f - 32);
textBox1.Text = c.ToString();


}


private void textBox2_TextChanged(object sender, EventArgs e)
{


}


private void textBox1_TextChanged(object sender, EventArgs e)
{


}
}
}

alireza_g698
یک شنبه 09 شهریور 1393, 22:09 عصر
سلام
ایجوری بنویسین مشکل پیش نمیاد double c, f;
double.TryParse(textBox1.Text, out f);

c =(double)5/9*(f - 32);

alireza_g698
یک شنبه 09 شهریور 1393, 22:25 عصر
محض اطلاع شما اعداد 5 و 9 چون ممیز ندارند بطور پیشفرض int در نظر گرفته میشوند و همونطور که میدونی در زبانهای خانواده C از جمله #C تقسیم دو عدد صحیح همیشه یک عدد صحیحه.
چون 5 کوچکتر از 9 هست، نتیجه تقسیم کوچکتر از یک میشه و چون هر دو صحیح هستند، تنها عدد صحیح کوچکتر از یک صفر هست و همین صفر در باقی عبارت ضرب میشه و کل عبارت رو صفر میکنه.
با تبدیل 5 از int به double عملگر تقسیم به صورت اعشاری عمل میکنه و نتیجه دیگه صفر نمیشه.میتونستین 5/9 را هم در یک 0.1 ضرب کنید به جای این که از double استفاده کنین

fanoudi
دوشنبه 10 شهریور 1393, 07:18 صبح
سلام
ایجوری بنویسین مشکل پیش نمیاد double c, f;
double.TryParse(textBox1.Text, out f);

c =(double)5/9*(f - 32);
اینجوری اعداد اعشاری میشه ولی هر دفعه با زدن دکمه یک عدد نشون میده ونتیجه هم درست نشون داده نمیشه ، اگر منبع یا مثالی در رابطه با تبدیل اعداد در سی سارپ دارید به من بگید که کلا گیج شدم

alireza_g698
دوشنبه 10 شهریور 1393, 09:11 صبح
اینجوری اعداد اعشاری میشه ولی هر دفعه با زدن دکمه یک عدد نشون میده ونتیجه هم درست نشون داده نمیشه ، اگر منبع یا مثالی در رابطه با تبدیل اعداد در سی سارپ دارید به من بگید که کلا گیج شدم

من کد خودم را تست کردم کاملا درست عمل میکرد.با ماشیین حساب هم که مقایشه کردم جوابش مثل برنامه بود.برنامه رو براتون گذاشتم.شاید شما توی چیزی اشتباه کردین.

fanoudi
دوشنبه 10 شهریور 1393, 12:19 عصر
من کد خودم را تست کردم کاملا درست عمل میکرد.با ماشیین حساب هم که مقایشه کردم جوابش مثل برنامه بود.برنامه رو براتون گذاشتم.شاید شما توی چیزی اشتباه کردین.
درست شد دوست عزیز ممنون از لطفت ،البته ورژن ویژوال شما فکر کنم بالاتر بود باز نشد میگفت این ورژن جدیدتر هست یک سوال خدمت شما دارم تو سی سارپ دستور زیاد وجود داره مثلا من این دستور رو نمیدونستم این دستور ها مرجع یا کتاب خاصی دارد تفاوت دستور tryparse با دستور خودم چی هست ؟

alireza_g698
دوشنبه 10 شهریور 1393, 14:19 عصر
درست شد دوست عزیز ممنون از لطفت ،البته ورژن ویژوال شما فکر کنم بالاتر بود باز نشد میگفت این ورژن جدیدتر هست یک سوال خدمت شما دارم تو سی سارپ دستور زیاد وجود داره مثلا من این دستور رو نمیدونستم این دستور ها مرجع یا کتاب خاصی دارد تفاوت دستور tryparse با دستور خودم چی هست ؟

دستور trypasre از ران تایم ارور جلوگیری میکنه.برای مثلا تو دستور شما اگه در تبدیل به int یک string وارد میکردید به شما ران تایم ارور میداد اما بااین دستور از این کار جلوگیری میکنه.من این دستور ها را همینجور تو کار ها و مقالات مختلف پیدا کردم.خود msdn بهترین منبع هستش.
اما اون double که من قبل از 5/9 نوشتم بش میگن explicity casting که باید آموزش ببینین.
موفق باشید