PDA

View Full Version : سوال: مشکل در تبدیل string به float برای اعداد ممیز دار



captain_black81
شنبه 07 دی 1387, 14:39 عصر
سلام

من یه تکسباکس دارم که از کابر یه عدد اعشاری میگیره و ذخیره میکنه
اما روی بعضی کامپیوترا اگه بزنه 2.24 بعد از تبدیل 224 بر میگرده یعنی ممیزو نمیبینه

ممنون میشم راهنمایی کنید

shask00l
شنبه 07 دی 1387, 15:47 عصر
میتونید با توابع کلاس string دو بخش مربوطه رو از هم جدا کنید . یک متغییر از نوع float بسازید و دو بخش بدست اومده رو با این متغییر جمع کنید .
البته این روش زیاد جالب نیست و 1 مقداری حوصله میخواد .

خود کلاس float نمیتونه string رو پارس کنه ؟

captain_black81
شنبه 07 دی 1387, 17:22 عصر
دوستی میگفت مربوط به تنظیمات زبان ویندوزه که تو بعضی سیستما کار میکنه. میخوام کاری کنم که به این زبان بستگی نداشته باشد

Amir Oveisi
شنبه 07 دی 1387, 17:48 عصر
برای تبدیل که
float.Parse(string s);

در مورد این مشکلی که گفتید من زیاد متوجه نشدم اگر بیشتر توضیح بدید ممنون میشم

موفق باشید
jooje

ennovation
شنبه 07 دی 1387, 23:36 عصر
سلام

جواب اول >


myetxtbox.text=myfloat.ToString("##0.00");

جواب دوم >
اونی که منظورت در مورد تنظیمات سیستم است مربوط به علامت ممیز است که بصورتهای مختلف در هر زبان نشان داده میشود. همانند نقطه ویرگول ممیز و غیره

موفق باشی

captain_black81
یک شنبه 08 دی 1387, 10:21 صبح
ببینید دوستان ، من یه نمونه میذارم


int num1=10;
float a=Convert.ToSingle("9.5");
if (a>num1)
{
// some codes
}

قائدتا این شرط نباید true بشه اما میشه، چون تو بعضی از سیستمها که language انگلیسی نیست بجای 9.5 عدد 95 رو مقایسه میکنه. و منو کلافه کرده. من نمیخوام نرم افزارم با این چیزای آبکی اشتباه کنه

سوال بعد اینه که convert.tosingle با float.parse فرق داره؟ ممکنه مشکل منو حل کنه؟

Amir Oveisi
یک شنبه 08 دی 1387, 10:31 صبح
چون تو بعضی از سیستمها که language انگلیسی نیست بجای 9.5 عدد 95 رو مقایسه میکنه
والا من که تو این 10 سال که با کامپیوتر کار میکنم همچین چیزی ندیدم!!!

ennovation
یک شنبه 08 دی 1387, 14:58 عصر
والا من که تو این 10 سال که با کامپیوتر کار میکنم همچین چیزی ندیدم!!!
دوست عزیز 10 سال مدت زیادی نیست که تمامی گوشه های برنامه نویسی را کمال و تمام یاد گرفت . توصیه میکنم در مورد CurrentCulture کمی مطالعه نمایید.

بهر حال در جواب دوست عزیزمان . برای از بین بردن چنین مشکلی در فایل
Program.cs این دو خط را اضافه کن



Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-GB");
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");


تمام . میتونی برنامه رو تست کنی و ببینی که درست کار میکنه . باز هم بخاطر اینکه بدونی منظورم دقیقا چیه تمامی کد فایل Program.cs ( این فایل به همین نام در پروژه خودت پیدا میکنی ) رو برات گذاشتم .


using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading;
namespace test
{
staticclassProgram
{

[STAThread]
staticvoid Main()
{
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-GB");
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(newForm1());
}
}
}

Amir Oveisi
یک شنبه 08 دی 1387, 15:17 عصر
دوست عزیز 10 سال مدت زیادی نیست که تمامی گوشه های برنامه نویسی را کمال و تمام یاد گرفت

بنده هیچ وقت ادعا نکردم که همه چیز رو بلدم و هیچ وقتم همچین ادعایی نمی تونم بکنم.

خوشحال میشم اگر دوستانی که همچین مشکلی داشتند بگن چه تنظیماتی رو رو سیستم اعمال کردن که این مشکل بوجود اومده تا بنده هم تست کنم. واضح تر بگم، چیکار باید با ویندوز کرد که ممیز رو نشون نده تو اعداد اعشاری.

موفق باشید
jooje

captain_black81
یک شنبه 08 دی 1387, 16:30 عصر
با تشکر از همه دوستان
بعد از یه تست اساسی نتیجه راهنمایی دوستمون ennovation رو هم میذارم


1)کلا بعضی از ویندوزهایی که توی بازار هست تو قسمت language option مشکلات داره. واسه همین باید سعی کرد تو پروزه های چند کاربره ترجیحا همه کلاینتها از یک cd ویندوز نصب بشن.
2) یه قسمتی هست توی language setup ویندوز که یه آیتم داره بنام decimal symbol که توی بعضی زبانها (.) و بعضی (،) است. این باعث میشه که برنامه موقع parse قات بزنه