PDA

View Full Version : تفاضل دو مقدار float



happy65_sh
شنبه 25 مهر 1388, 08:46 صبح
سلام به همه ي دوستان عزيز
توي يه برنامه نياز شده كه مقدار دو text box را از هم كم كنم.از طريق ايونت keypress تكست باكس هام را محدود به گرفتن اعداد و . كرده ام 2.3 نشان دهنده ي2كيلو و 3 گرم است حالا از طريق كد زير مقادير 2 تا تكست باكس را از هم كم كرده ام


tb1 = (float.Pars(tb3.Text) - float.Pars(tb2.Text)).ToString() ;

آيا جواب هم نبايد به صورت float باشه؟؟
اگه ميشه دوستان راهنمايي كنند ممنون ميشم

sara.f
شنبه 25 مهر 1388, 11:41 صبح
دوستان خواهشا نظري ؟؟
سلام.
منظورتون چه نظری هست؟!
شما الان می خواید بدونید که آیا این کد جواب float برمی گردونه یا نه؟
من امتحان کردم، جوابش float شد. البته ااین parse هست نه pars

happy65_sh
شنبه 25 مهر 1388, 12:18 عصر
مي دونم مقدار بازگشتي float هست اما اگه بخواهي اين مقدار را توي تكست باكس (ويژوال2008)نشون بدي به صورت float نشون نميده؟مثلا اگه جواب تفاضل بشه 2.8 جواب رابه صورت 28 نشون ميده

sara.f
شنبه 25 مهر 1388, 12:36 عصر
مي دونم مقدار بازگشتي float هست اما اگه بخواهي اين مقدار را توي تكست باكس (ويژوال2008)نشون بدي به صورت float نشون نميده؟مثلا اگه جواب تفاضل بشه 2.8 جواب رابه صورت 28 نشون ميده
عجیباً غریبا!!!
چون من Vs2008 دارم و همین الان هم امتحان کردم و جواب float داد.

happy65_sh
شنبه 25 مهر 1388, 13:33 عصر
سلام
من از ويندوز سرور استفاده مي كنم از اين نظر كه فرقي نداره؟؟
دوست عزيز sara.f اگرلطف كني و برنامه اي كه نوشته اي (نه كدت) را اينجا بذاري ممنون ميشم

sara.f
شنبه 25 مهر 1388, 13:48 عصر
سلام
من از ويندوز سرور استفاده مي كنم از اين نظر كه فرقي نداره؟؟
دوست عزيز sara.f اگرلطف كني و برنامه اي كه نوشته اي (نه كدت) را اينجا بذاري ممنون ميشم
ویندوز سرور؟ ببخشید میشه بگید این چیه؟
اینم برنامه

happy65_sh
یک شنبه 26 مهر 1388, 09:23 صبح
فهميدم مشكلم چي بوده بايد در تكست باكس از , استفاده كرد نه . تا جواب درست برگردونده بشه!:گیج:
در هر حال ممنونم

sara.f
یک شنبه 26 مهر 1388, 09:34 صبح
فهميدم مشكلم چي بوده بايد در تكست باكس از , استفاده كرد نه . تا جواب درست برگردونده بشه!:گیج:
در هر حال ممنونم
خسته نباشید!
پس چطوریه که در پروژه ای که واستون گذاشتم ، من از .استفاده کردم و درست جواب داد؟!!!

happy65_sh
یک شنبه 26 مهر 1388, 09:43 صبح
خسته نباشید!

شما خسته نباشيد دوست عزيز :لبخند:

چطوریه که در پروژه ای که واستون گذاشتم ، من از .استفاده کردم و درست جواب داد؟!!!
به عكس زير نگاهي بيانداز;شما واسه, جواب درست نميده و همون اتفاقي مي افته كه براي . در برنامه من:متفکر:

sara.f
یک شنبه 26 مهر 1388, 16:09 عصر
شما خسته نباشيد دوست عزيز :لبخند:

به عكس زير نگاهي بيانداز;شما واسه, جواب درست نميده و همون اتفاقي مي افته كه براي . در برنامه من:متفکر:
خب مگه قرار بود با , جواب درست بده؟!!!!!
در ریاضیات چه چیزی قسمت اعشار را از صحیح جدا می کنه؟!!!
دات(.) یا کاما (,)؟!!!

happy65_sh
دوشنبه 27 مهر 1388, 07:51 صبح
پس ميشه يك توضيح منطقي پيدا كرد كه چرا توي سيستم من فقط با , جواب ميده نه با . ؟؟؟؟؟:متفکر:

حامد مصافی
دوشنبه 27 مهر 1388, 09:21 صبح
Control Panel | Regional and Language Options | Regional options | Customize... | Numbers | Decimal symbole
این گزینه مشخص کننده کاراکتر جداکننده اعشار در کامپیوتر شماست

به جای

float.parse

امضای زیر را امتحان کنید:


float.Parse(float_string, System.Globalization.NumberStyles.Any)

happy65_sh
دوشنبه 27 مهر 1388, 10:44 صبح
امضای زیر را امتحان کنید:


کد:
float.Parse(float_string, System.Globalization.NumberStyles.Any)

نشد دوست عزيز امتحان كردم باز هم تفاضل مثلا 3.2 و 1.5 را به صورت 17 بر مي گردونه نه 1.7

حامد مصافی
دوشنبه 27 مهر 1388, 10:47 صبح
و آیا گزینه ای که معرفی کردم به جای "." کاراکتر "," در کامپیوتر شما بود؟

happy65_sh
دوشنبه 27 مهر 1388, 12:37 عصر
دستت درد نكنه دوست عزيز از مسيري كه داده بودي رفتم و اون كاراكتر را كه كاما بود دات كردم:قلب:.آيا روشي هست كه از طريق كد نويسي بتوان آن را كنترل كرد؟

حامد مصافی
سه شنبه 28 مهر 1388, 10:42 صبح
تابع زیر را برای تبدیل رشته به float نوشتم اما تست نکردم!


private float StringToFloat(string floatString)
{
string separator = System.Globalization.CultureInfo.CurrentCulture.Nu mberFormat.CurrencyDecimalSeparator;
float floatRet;
System.Text.RegularExpressions.Regex r =
new System.Text.RegularExpressions.Regex(@"(?<I>\d+)\" + separator + @"(?<F>\d+)");
System.Text.RegularExpressions.Match m = r.Match(floatString);
floatRet = float.Parse(m.Groups["I"] + separator + m.Groups["F"]);
return floatRet;
}

happy65_sh
سه شنبه 28 مهر 1388, 11:20 صبح
با سلام و تشكر
دوست عزيز ممنون از بابت زحمتي كه كشيدي من امتحان كردم از خط زير خطا گرفت:

floatRet = float.Parse(m.Groups["I"] + separator + m.Groups["F"]);

خودم هيچي از كدي كه نوشتي سر در نياوردم به جز خط اولش!!! :گیج:وگرنه خودم سعي مي كردم مشكلش را برطرف كنم خطايي كه مي ده به شكل زير هست:

Input string was not in a correct format.
برنامه را گذاشتم تا اگه وقت كردي ببيني ...
بازم ازت ممنونم:تشویق:

حامد مصافی
چهارشنبه 29 مهر 1388, 10:16 صبح
من تابع را به این شکل تغییر دادم.
در مقدار پاس داده شده به این تابع برای جدا کننده اعشار می توانید از "." , "/" , "," و کاراکتر تعیین شده در تنظیمات ویندوز استفاده کنید. در صورتی که مقدار وارد شده اعشار نداشته باشد، تابع مقدار معادل آن را بر می گرداند.
این بار تست کردم ;)


private float StringToFloat(string floatString)
{
string separator = CultureInfo.CurrentCulture.NumberFormat.NumberDeci malSeparator;
Regex r = new Regex(@"(?<I>\d+)[\" + separator + @"\,\/\.](?<F>\d+)");
/* (1) (2) (3)
* 1: numeric charachter, one or more. this is a group with name "I"
* 2: any of "system decimal separator" or "," or "/" or "." charachters
* 3: numeric charachter, one or more. this is a group with name "F"
*
* total of this pattern is a float number in string variable
*/

if (r.IsMatch(floatString)) /* is match with our pattern ?? */
{
Match m = r.Match(floatString);
return float.Parse(m.Groups["I"] + separator + m.Groups["F"]);
}
else /* try to parse in normal mode; maybe an int ! */
return float.Parse(floatString);
}



ضمناً : using های زیر را نیز درج کنید:


using System.Globalization;
using System.Text.RegularExpressions;

happy65_sh
چهارشنبه 29 مهر 1388, 11:05 صبح
دمتون گرم :قلب:
دستتون درد نكنه:تشویق:
عالي بود