PDA

View Full Version : سوال: ضرب دو عدد و نمایش نتیجه آن به صورت فرمت پولی در تکست باکس



sattar1
پنج شنبه 18 اردیبهشت 1399, 20:41 عصر
سلام

بنده میخواهم دو عدد از نوع long و double را در هم ضرب و نتیجه را در یک تکست باکس بریزم. (مثلا 1*2.5)

http://uupload.ir/files/s4r7_screenshot_(551).png


در حالت پیش فرض مشکلی نیست (نتیجه 2.5)

اما وقتی در رویداد TextChanged کد زیر را برای اینکه ارقام 3 رقم 3 رقم جدا بشه نتیجه را رند میکند (نتیجه 3)
if (textBox15.Text != string.Empty)
{
textBox15.Text = string.Format("{0:n0}", double.Parse(textBox15.Text.Replace(",", "")));
textBox15.Select(textBox15.Text.Length, 0);
}

چه کار کنم تا از رند شدن جلوگیری بشه.


http://uupload.ir/files/dpkx_screenshot_(549).png


در واقع میخوام ضرب یک عدد صحیح در یک عدد اعشاری و نمایش نتیجه به صورت فرمت پولی درون تکست باکس اتفاق بیفته.

ممنون

ShayanFiroozi
پنج شنبه 18 اردیبهشت 1399, 21:16 عصر
سلام دوست عزیز ،

برای جدا سازی 3 رقم از این استاندارد استفاده کنین :

string.Format("{0:#,###0}

در واقع شما اگر به جای "{0:n0}" از "{0:n1}" استفاده کنین مشکلتون حل میشه.

sattar1
پنج شنبه 18 اردیبهشت 1399, 21:37 عصر
سلام دوست عزیز ، برای جدا سازی 3 رقم از این استاندارد استفاده کنین : string.Format("{0:#,###0} در واقع شما اگر به جای "{0:n0}" از "{0:n1}" استفاده کنین مشکلتون حل میشه. ممنون بابت راهنمایی ولی در این حالت برای ارقام دو رقم و بیشتر یک .0 جلوی عدد نمایش میده
1 * 2.5 = 2.5
100 * 2.5 = 250.0
حالا برا حدف اون صفر چی کار باید کرد؟

ShayanFiroozi
پنج شنبه 18 اردیبهشت 1399, 22:03 عصر
این string format رو تست کنین :

{0:0.##}

محمد رضا فاتحی
جمعه 19 اردیبهشت 1399, 09:16 صبح
این فرمت رو تست کنید

mydouble.ToString("##,###")

sattar1
جمعه 19 اردیبهشت 1399, 10:59 صبح
این string format رو تست کنین :

{0:0.##}

اگه منطورتون اینکه جای
"{0:#,###0}"
از این کد استفاده کنیم... کد فوق اصلا 3رقم 3رقم جدا نمیکنه

sattar1
جمعه 19 اردیبهشت 1399, 11:02 صبح
این فرمت رو تست کنید

mydouble.ToString("##,###")


من متوجه نشدم... از کد فوق چجوری استفاده کنم... در حاله حاضر کد بنده بدین صورته:
TextBox.Text = string.Format("{0:n0}", double.Parse(TextBox.Text.Replace(",", "")));

the king
جمعه 19 اردیبهشت 1399, 11:56 صبح
من متوجه نشدم... از کد فوق چجوری استفاده کنم... در حاله حاضر کد بنده بدین صورته:
TextBox.Text = string.Format("{0:n0}", double.Parse(TextBox.Text.Replace(",", "")));
شاید خیلی براتون مساله نباشه، اما دقت کنید که فرض رو بر این قرار دادید که سه رقم سه رقم با کاراکتر "," جدا میشه، میتونه اینطور باشه ولی الزاما اینطوری نیست.
مخصوصا وقتی که FormatProvider رو در برنامه تون مشخص نکنید ToString و string.Format به تنظیمات زبان در ویندوز رجوع میکنه که ببینه فرمت عددی ویندوز چیه.
ممکنه روی سیستم کاربری بجای "," سه رقم سه رقم با "." یا "`" و ... جدا بشه و کلا تفسیر عدد تغییر کنه.

حداکثر یک رقم بعد اعشار :

textBox15.Text = double.Parse(textBox15.Text.Replace(",", "")).ToString("#,0.#");


حداکثر سه رقم بعد اعشار :

textBox15.Text = double.Parse(textBox15.Text.Replace(",", "")).ToString("#,0.###");