PDA

View Full Version : مشکل در کار با نوع float



adineh67
چهارشنبه 10 دی 1393, 11:27 صبح
سلام
یه فیلد به نام فیلد وزن در برنامم دارم که از نوع float تعریفش کردم . برای مثال وقتی تایپ میکنم 25.54 عددمو به شکل 25.540035882 درمیاره میدونم که با تغییر فرمت درست میشه ولی نمیدونم چطوری؟
ممنون میشم راهنماییم کنید

Share & Learn
چهارشنبه 10 دی 1393, 11:58 صبح
سلام
این لینک (http://stackoverflow.com/questions/164926/c-sharp-how-do-i-round-a-decimal-value-to-2-decimal-places-for-output-on-a-pa) بدردتون می خوره

vazn.ToString ("#.##");

adineh67
چهارشنبه 10 دی 1393, 12:19 عصر
سلام
این لینک (http://stackoverflow.com/questions/164926/c-sharp-how-do-i-round-a-decimal-value-to-2-decimal-places-for-output-on-a-pa) بدردتون می خوره

vazn.ToString ("#.##");


اینو دیدم ولی متوجه نشدم چطوری باید ازش استفاده کنم.من موقع درج مقادیر،مقدار وزن رو اینطوری دریافت میکنم


Tscale = float.Parse(TXTscale.Text.Trim());


حالا چطوری این فرمت رو بهش اعمال کنم؟

erfan_urchin
چهارشنبه 10 دی 1393, 14:01 عصر
اینو دیدم ولی متوجه نشدم چطوری باید ازش استفاده کنم.من موقع درج مقادیر،مقدار وزن رو اینطوری دریافت میکنم


Tscale = float.Parse(TXTscale.Text.Trim());


حالا چطوری این فرمت رو بهش اعمال کنم؟
textBox1.Text = Tscale.ToString("0.00");

adineh67
چهارشنبه 10 دی 1393, 20:03 عصر
من کد درج رو به این شکل تغییر دادم


Tscale = float.Parse(TXTscale.Text.Trim());
Tscale.ToString("0.00");


تو اجرا مقدار 25.62رو وارد کردم و چیزی که واسم نمایش داد مقدار 25.6200008392334 بود :افسرده:

Share & Learn
چهارشنبه 10 دی 1393, 20:25 عصر
می شه قسمت بیشتری از کدتون رو قرار بدید؟

adineh67
چهارشنبه 10 دی 1393, 21:23 عصر
والا کد این بخش خیلی طولانی هست نمیدونم چه قسمتیش مورد نیاز هست که بذارم فقط این توضیحو میدم که مقدار وزن رو توسط یه تکست باکس از کاربر میگیرم و تبدیل به float کرده ثبت میکنم

Share & Learn
چهارشنبه 10 دی 1393, 21:55 عصر
اگر کد طولانی هم بذارید عیب نداره، خودم اون تیکه ای که لازم دارم رو چک می کنم
یا نه، فقط همون کدی که باهاش مقدار وزن رو توسط یه تکست باکس از کاربر میگیرید و تبدیل به float می کنید رو بذارید
الان تو این کد Tscale چیه؟ از چه نوعیه؟ کجا و چطور تعریفش کردید؟ و کجا و چطور نمایشش می دید که عدد مناسب رو نشون نمی ده؟

Tscale = float.Parse(TXTscale.Text.Trim());
Tscale.ToString("0.00");


والا من هرکاری می کنم عدد رو غلط نشون بده نمی ده!!!!


private void button1_Click(object sender, EventArgs e)
{
float Tscale;
Tscale = float.Parse(textBox1.Text.Trim());
MessageBox.Show(Tscale.ToString());
}

adineh67
چهارشنبه 10 دی 1393, 23:56 عصر
دوست عزیز اضافات کدمو پاک کردم و تیکه ای که مربوط به مشکلم میشه رو براتون گذاشتم




try
{
float Tscale = 0;
if (TXTscale.Text.Trim() != "")
{
Tscale = float.Parse(TXTscale.Text.Trim());
Tscale.ToString("0.00");
}
cntl.updatesegment(Tscale);
MessageBox.Show("اطلاعات با موفقیت تغییر یافت");
this.Close();
}
}
catch
{
}

erfan_urchin
پنج شنبه 11 دی 1393, 01:03 صبح
آخه شما الان رسما هیچ کاری انجام ندادی!!!!
شما میای میگی Tscale رو تبدیل کن به string و دوتا اعشار رو نشون بده اما اینارو جایی نمیریزین!!!
دقیقا مثه اینه که من به جای این که بنویسم i = i + 10 بیام بنویسم i+10
به نظر من شما بیا Tscale رو از نوع Double بگیر و بعد کدت رو به شکل زیرتغییر بده

double Tscale = 0;
if (TXTscale.Text.Trim() != "")
{
Tscale = double.Parse(TXTscale.Text.Trim());
Tscale = Convert.ToDouble((Tscale).ToString("0.00"));
}

adineh67
پنج شنبه 11 دی 1393, 01:40 صبح
به نظر من شما بیا Tscale رو از نوع Double بگیر و بعد کدت رو به شکل زیرتغییر بده

double Tscale = 0;
if (TXTscale.Text.Trim() != "")
{
Tscale = double.Parse(TXTscale.Text.Trim());
Tscale = Convert.ToDouble((Tscale).ToString("0.00"));
}

ببخشید اگه اینجا نوعو دابل بگیرم تو دیتابیس نوعشو چی بذارم؟

erfan_urchin
جمعه 12 دی 1393, 00:30 صبح
ببخشید اگه اینجا نوعو دابل بگیرم تو دیتابیس نوعشو چی بذارم؟
هم میتونی float بگیری هم میتونی real بگیری اما real مقدار اعشار بیشتری رو در بر میگیره

partovinia
جمعه 12 دی 1393, 13:40 عصر
سلام دوست عزیز.شما باید زمانیکه از داده اعشاری float استفاده می کنید باید در هنگام تعریف متغیر کنار مقدار اولیه F بگذارید من کدی رو که شما ذکر کردین بدون مشکل اجرا گرفتم



try
{
.0float Tscale = 0;try
{
float Tscale = 0.0F;
if (TXTscale.Text.Trim() != "")
{
Tscale = convert.toSingle(TXTscale.Text.Trim());
}
MessageBox.Show("اطلاعات با موفقیت تغییر یافت");
this.Close();
}
}
catch
{
}






البته اطلاعاتی که دوستان هم ذکر کردن کاملا درسته...
موفق باشین

ASKaffash
جمعه 12 دی 1393, 18:55 عصر
سلام
در بانک float بگیرید ولی در #C از نوع double بگیرید خواهید دید درست عمل می کند