PDA

View Full Version : سوال: مشکل ممیز در ویندوز 8



ali it
یک شنبه 26 بهمن 1393, 11:16 صبح
سلام دوستان عزیز

من در ویندوز 8 یه برنامه ساده تستی نوشتم که یه تکست باکس داره و عدد داخلش باید از نوع Float باشه

ولی وقتی میگم convert.Tosingel کنه چون در ویندوز هشت به جای . / قرار میده نمی تونه به Float کانورت کنه

مثلا به جای 2.5 خود به خود میشه 2/5 و این باعث میشه کانورت نشه

ممنون میشم اگه راهنماییم کنید:لبخندساده:

joker
یک شنبه 26 بهمن 1393, 11:52 صبح
controlpanel
region
additional setings..
Decimal symbol را برابر با . قرار بده این مقدار به صورت پیش فرض در ویندوز 8 برابر / قرار دارد.

plus
یک شنبه 26 بهمن 1393, 17:50 عصر
ظاهرا Convert.ToSingle از Culture جاری برای تبدیل استفاده میکنه. میتونید از overload پارامتر دار با ارسال CultureInfo.InvariantCulture استفاده کنید.

float number =Convert.ToSingle(textbox1.Text, CultureInfo.InvariantCulture);


و برای تبدیل float به رشته، بدون توجه به Culture تنظیم شده در ویندوز از


string s = Convert.ToString(1.251, CultureInfo.InvariantCulture);

استفاده کنید.

کاگه موشا
دوشنبه 27 بهمن 1393, 03:25 صبح
با سلام خدمت اساتید، یه سوال داشتم.
الان بنده دارم یه ماشین حساب مینویسم با سی شارپ و همین مشکل رو داشتم که خودم همینجوری حلش کردم، ولی برای من این کار صورت مسئله رو پاک کردنه به نظرم. چون من میخوام دکه ممیز بزارم، حالا اگه من ممیز رو رو نقطه تنظیم کنیم ممکنه بعضی کاربرا به مشکل بر بخورن و رو slash بزارم بعضی دیگه.
چجوری به سی شارپ بفهمونم اگه کاربر این دکمه رو فرم یا رو کیبورد کلیک کرد ببین رجیونال کاربر رو چی تنظیم شده همونو بزار . چون من عمده برنامه رو کامل کردم ، فقط چند بخشش مونده که یکی همینه.
راستی جناب پلاس عزیز، هر دو متد یک کار رو میکنن. من امتحان کردم هر دو اگه slash باشه، slash میزارن و اگر نقطه باشه نقطه. شایدم بنده منظورو درست متوجه نشدم.
ارادتمند کاگه موشا.

plus
دوشنبه 27 بهمن 1393, 06:04 صبح
با سلام خدمت اساتید، یه سوال داشتم.
الان بنده دارم یه ماشین حساب مینویسم با سی شارپ و همین مشکل رو داشتم که خودم همینجوری حلش کردم، ولی برای من این کار صورت مسئله رو پاک کردنه به نظرم. چون من میخوام دکه ممیز بزارم، حالا اگه من ممیز رو رو نقطه تنظیم کنیم ممکنه بعضی کاربرا به مشکل بر بخورن و رو slash بزارم بعضی دیگه.
چجوری به سی شارپ بفهمونم اگه کاربر این دکمه رو فرم یا رو کیبورد کلیک کرد ببین رجیونال کاربر رو چی تنظیم شده همونو بزار . چون من عمده برنامه رو کامل کردم ، فقط چند بخشش مونده که یکی همینه.
راستی جناب پلاس عزیز، هر دو متد یک کار رو میکنن. من امتحان کردم هر دو اگه slash باشه، slash میزارن و اگر نقطه باشه نقطه. شایدم بنده منظورو درست متوجه نشدم.
ارادتمند کاگه موشا.
بله جواب رو اصلاح کردم ممنون از تذکر...
درست فکر میکنید. باید به تنظیمات کاربر احترام گذاشت. رشته مورد نظر رو میتونید به این صورت بدست بیارید:

string decimalSeparator = CultureInfo.CurrentCulture.NumberFormat.CurrencyDe cimalSeparator;

کاگه موشا
دوشنبه 27 بهمن 1393, 06:27 صبح
فهمیدم. برای اینکار باید قبلش در قسمت بالا

using System.Globalization
رو اضافه کنیم.