PDA

View Full Version : مشکل با جدا کردن سه رقم سه رقم



alinaghiha
شنبه 12 فروردین 1391, 00:18 صبح
من با این کد اعداد را سه رقم سه رقم جدا می کنم



txt_n_.Text = string.Format("{0:N0}", Int64.Parse(txt_n_.Text.Replace(",", "")));




اما دو تا مشکل اساسی دارم
1-تا نه رقم جواب می ده یعنی 10 رقمی خطا میده
2- برای اعداد منفی جواب نمی ده
اگر دوستان راه حلی دارند بفرمایند

f4rib0rz
شنبه 12 فروردین 1391, 00:50 صبح
txt_n_.Text=Microsoft.VisualBasic.Strings.Format(M icrosoft.VisualBasic.Conversion.Val(txt_n_.Text.Tr im().Replace(",", "")), "#,0");
از این کد استفاده کن برای اعداد بزرگ تست کردم جواب میده هر چند تا که می خواد رقم داشته باشه
برای اعداد منفی جواب نمیده چون فرمت رو رو عدد می بری منفی رو قبول نمی کنه خودت ببین چی کارش می تونی بکنی

alinaghiha
شنبه 12 فروردین 1391, 01:41 صبح
من کد سی شارپ می خواستم
تو سی شارپ جواب نداد

C#.net
شنبه 12 فروردین 1391, 09:28 صبح
int value = 12346546;
Console.WriteLine(value.ToString("N0"));


اون عدد صفر هم تعداد ارقام اعشار رو مشخص می کنه.

f4rib0rz
شنبه 12 فروردین 1391, 10:25 صبح
من کد سی شارپ می خواستم
تو سی شارپ جواب نداد

درسته از دستورات vb استفاده کردم ولی تو C# اسفاده کن مشکلی نداره
من خودم تو پروژه هام از این استفاده می کنم

abdullah20
شنبه 12 فروردین 1391, 12:18 عصر
private void textBox2_TextChanged(object sender, EventArgs e)
{
string s = "";
string[] words = textBox2.Text.Split(',');
foreach (string word in words)
{
s += word;
}
Int64 n = s.Length;
if (n % 3 == 0)
textBox2.Text = String.Format("{0:n0}", Int64.Parse(s));
}

alinaghiha
شنبه 12 فروردین 1391, 13:15 عصر
درسته از دستورات vb استفاده کردم ولی تو C# اسفاده کن مشکلی نداره
من خودم تو پروژه هام از این استفاده می کنم
اما من تو vs 2008 استفاده می کنم بعد از Microsoft.VisualBasic کلمه string رو نمی شناسه

C#.net
شنبه 12 فروردین 1391, 13:46 عصر
اما من تو vs 2008 استفاده می کنم بعد از Microsoft.VisualBasic کلمه string رو نمی شناسه

واقعا نتونستید از این کد استفاده کنید؟


int value = 12346546;
Console.WriteLine(value.ToString("N0"));


اون عدد صفر هم تعداد ارقام اعشار رو مشخص می کنه.



اگه یه مقدار تلاش کنید و دنبال راه حل آماده نباشید زودتر به جواب می رسید، به هر حال این چیزیه که می خواهید:



txt_n_.Text = Decimal.Parse(txt_n_.Text).ToString("N3");


تا سه رقم اعشار(اگه بیشتر لازم دارید عدد جلوی N رو تغییر بدید)، اعداد منفی رو هم ساپورت می کنه بزرگترین و کوچکترین عددی که جواب می ده: (29 رقم!)


[-79228162514264337593543950335, 79228162514264337593543950335]




private void textBox2_TextChanged(object sender, EventArgs e)
{
string s = "";
string[] words = textBox2.Text.Split(',');
foreach (string word in words)
{
s += word;
}
Int64 n = s.Length;
if (n % 3 == 0)
textBox2.Text = String.Format("{0:n0}", Int64.Parse(s));
}

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

MS.Worm
شنبه 12 فروردین 1391, 14:00 عصر
منم همین مشکل رو دارم
این کد درست جواب میده:

txt_n_.Text = Decimal.Parse(txt_n_.Text).ToString("N3");



فقط یه مشکل. من میخوام وقتی دارم داخل تکس باکس مینویسم این کار یعنی 3 رقم 3رقم جدا بشه؟
آیا امکانش هست؟

system32
شنبه 12 فروردین 1391, 14:46 عصر
خیلی راحت طبق دستور زیر

System.Convert.ToDecimal("TextBox1.Text").ToString("#,#");

alinaghiha
شنبه 12 فروردین 1391, 22:11 عصر
ممنون دوستان
من می خواستم تو رویداد textchange استفاده کنم که مشکلم حل شد

navidmirfallah
چهارشنبه 03 خرداد 1391, 15:21 عصر
دوستان عزیز جهت جدا سازی اعداد به صورت سه رقم سه رقم بدون نیاز به کدنویسی

1.درون پایگاه دادتون نوع داده رو باید حتما از نوع int یا decimal تعریف کنید.
2.در visual studio روی gridview کلیک کرده و از منوی باز شده روی edit columns کلیک کنید
3.ستون مورد نظر مثل قیمت را انتخاب کنید.
4.گزینه html encoding را false کنید.
5.در Dataformatstring عبارت {0:N0} را بنویسید.

بعد که به همین سادگی که نتیجه رو دیدیدمنم دعا کنید.مرسی

navidmirfallah
چهارشنبه 03 خرداد 1391, 15:23 عصر
اینم واسه بچه های VB کار


Dim value As Double = reader.Item(CStr("gheymat"))
gheymat_format.Text = value.ToString("N0")


مقدار فیلد قیمت رو می خونیم بعد سه رقم سه رقم جدا کردن ریختم تو یه تکست باکس

somitlb
یک شنبه 03 شهریور 1398, 23:45 عصر
سلام دوستان من وقتی عدد رو دسیمال تعریف میکنم و از کد های جدا کننده اعداد در تکست باکس استفاده میکنم وقتی ذخیره میکنم تو sql یجور دیگه ذخیره میشه
مثلا 10,000 تو خود دیتاگریدویو 10,000 نمایش میده اما تو sql اینجوریه 10000,00 واسه همین تو محاسبات ارور میگیره

orf_omid0030
دوشنبه 04 شهریور 1398, 07:41 صبح
سلام دوستان من وقتی عدد رو دسیمال تعریف میکنم و از کد های جدا کننده اعداد در تکست باکس استفاده میکنم وقتی ذخیره میکنم تو sql یجور دیگه ذخیره میشه
مثلا 10,000 تو خود دیتاگریدویو 10,000 نمایش میده اما تو sql اینجوریه 10000,00 واسه همین تو محاسبات ارور میگیره

توی database تعریف ستون رو باید بذاری decimal(24,0)

somitlb
سه شنبه 05 شهریور 1398, 01:27 صبح
من decimal(18,0) کردم ولی نشد