PDA

View Full Version : حرفه ای: طریقه نمایش اعداد اعشاری در سی شارپ



armin.poshtiban
شنبه 21 شهریور 1394, 19:13 عصر
با سلام خدمت بزرگواران عزیز
من برنامه ای دارم که یک مقدار اعشاری با دقت مضاعف رو تو فایل ذخیره می کنه اما وقتی داخل فایل رو باز می کنم اعداد اعشاری رو با ویرگول از هم جدا می کرده و زمانی که فایل رو در برنامه دیگه لود میکنم مشکل ایجاد می کنه بیزحمت راهنمایی کنید.
البته از Bitconvert , tosingle استفاده کرده ام

nunegandom
شنبه 21 شهریور 1394, 20:24 عصر
سلام
ویرگول ها رو حذف کن خب :|
از regular expression استفاده کن پترن اول رو همون ویرگول بذار فقط
پترن دوم رو یه استرینگ خالی بذار و نه فاصله
و این ها رو توی تابع Replace قرار بده


using System;
using System.Text.RegularExpressions;


public class Example
{
public static void Main()
{
string input = "This is text with far too much " +
"virgul.";
string pattern = ",";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);


Console.WriteLine("Original String: {0}", input);
Console.WriteLine("Replacement String: {0}", result);
}
}
}

armin.poshtiban
یک شنبه 22 شهریور 1394, 19:58 عصر
دوست عزیز با تشکر از رهنمایت
اما منظور من تو فایلی که ذخیره می کنم هست مثلا عدد 1,0789222.0000 و می خوام بصورت 10789222.0000 نمایش داده شود.

nunegandom
دوشنبه 23 شهریور 1394, 01:28 صبح
خوب اینم برای موقع خوندنه!

armin.poshtiban
دوشنبه 23 شهریور 1394, 17:47 عصر
بیزحمت راهنمایی کنید. ممنون میشم

nunegandom
دوشنبه 23 شهریور 1394, 18:41 عصر
وقتی خوندی فایل رو بذارش توی input همین
جوابش هم میاد توی result

armin.poshtiban
پنج شنبه 02 مهر 1394, 12:43 عصر
بیزحمت میشه بیشتر توضیح بدین ؟
نمی خواهم نتیجه رو تو Result ببنم بلکه تغییرات تو خود فایل انجام بشه چون فایل من خیلی بزرگه!
همچنین وقتی اعداد خونده می شن توی خود فایل ذخیره میشه دیگه نمی خوام کار اضافی تری انجام بدم
اگه راه حل منطقی تری داره بیزحمت بگین؟
ممنون

ahmad.t1100
پنج شنبه 02 مهر 1394, 14:20 عصر
دوست عزیز یک کم دقیق تر توضیح بدید.ببینید سی شارپ و دات نت متاسفانه به خاطر همین مشکل خودش راه هایی رو پیشنهاد کرده و قبول داره این یه ایراد هستش مثلا برای خوندن فایل در سی شارپ دستور زیر

var fileNumbers = File.ReadLines(filename).Select(double.Parse);


دستور درج رو قرار بدید لطفا

armin.poshtiban
جمعه 03 مهر 1394, 13:05 عصر
ممنون از راهنمای شما.
اینجوری بگم
من یک برنامه دارم که توی خود برنامه محاسباتی انجام می شه و نتیجه محاسبات تویک فایل ذخیره میشه. خروجی که تو فایل ذخیره میشه مقادیری اعشاری داره که برای محاسبات دیگه مورد استفاده قرار میگره. در این محاسبات چون ویرگول می افته مجبورم فایل رو خودم بازم کنم و کل ویرگول ها را حذف کنم که خیلی زمان بره.
ممون

ahmad.t1100
جمعه 03 مهر 1394, 23:27 عصر
از این دستور استفاده کنید


var x = decimal.Parse("18,285", new NumberFormatInfo() { NumberDecimalSeparator = "," });


یا دستور


text = text.Replace(',', '.');
return double.TryParse(text, NumberStyles.Any, CultureInfo.InvariantCulture, out value);

این دستورم خوبه و واسه خودم کار کرد


double vdouble = 0;
string sparam = "2,1";

if ( !Double.TryParse( sparam, NumberStyles.Float, CultureInfo.InvariantCulture, out vdouble ) )
{
if ( sparam.IndexOf( '.' ) != -1 )
{
sparam = sparam.Replace( '.', ',' );
}
else
{
sparam = sparam.Replace( ',', '.' );
}

if ( !Double.TryParse( sparam, NumberStyles.Float, CultureInfo.InvariantCulture, out vdouble ) )
{
vdouble = 0;
}
}


فروم برنامه نویسی سویتیپ (http://www.forum.soitip.ir)

armin.poshtiban
یک شنبه 05 مهر 1394, 18:40 عصر
سلام
این قطعه کد حذف ویرگول را در اعداد اعشاری انجام می دهد.
private void button1_Click(object sender, EventArgs e)
{
double number = 0;
number = Convert.ToDouble(String.Format(textBox1.Text.ToStr ing()));
MessageBox.Show("Num:" + number.ToString("F04", CultureInfo.InvariantCulture));


}