نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
بسمه تعالی
با سلام
من می خواهم یک عدد اعشاری که ممکنه هر تعداد اعشار داشته باشه رو فقط 2 رقم اعشارش رو بگیرم
البته من نمی خواهم اون عدد رو round کنم
مثلا می خواهم عدد 2.669466 بشه 2.66
البته دنبال تابع ریاضی برای اون هستم با رشته خودم می تونم درستش کنم
با تشکر
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
توابع ریاضی همشون Round میکنن ... باید دستی با string ببریش ....
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
بسمه تعالی
با سلام
نقل قول:
نوشته شده توسط
exlord
توابع ریاضی همشون Round میکنن ... باید دستی با string ببریش ....
مطمئن هستید هیچ راهی نداره؟
با تشکر
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
نقل قول:
مطمئن هستید هیچ راهی نداره؟
نه بابا چی چی رو راه نداره.
این هم کد گرفتن 2 رقم اعشار
MessageBox.Show(string.Format("{0:n2}",3.14159 ));
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
نقل قول:
نوشته شده توسط
محسن شامحمدی
نه بابا چی چی رو راه نداره.
این هم کد گرفتن 2 رقم اعشار
MessageBox.Show(string.Format("{0:n2}",3.14159 ));
MessageBox.Show(string.Format("{0:n2}", 2.669466)); //==> Output : 2.67
نقل قول:
نوشته شده توسط
hassan_kahrizy
البته من نمی خواهم اون عدد رو round کنم
مثلا می خواهم عدد 2.669466 بشه 2.66
از این روشا بله خیلی زیادن ... ولی همشون متد ToString رو صدا میزنن که اونم خروجیشو Round میکنه ...
تنها روش استفاده از string خالیه ...
decimal d = 12.66666m;
string tempStr = d.ToString();
if (tempStr.Split('.')[1] != null)
tempStr = tempStr.Split('.')[0] + "." + tempStr.Split('.')[1].Substring(0, 2);
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
بسمه تعالی
با سلام
از دوستان متشکرم خیلی لطف کردید
ولی دنبال راهی با توابع ریاضی می گشتم فکر می کردم چنین چیزی تو توابع ریاضی دات نت طراحی شده باشه
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
نقل قول:
نوشته شده توسط
محسن شامحمدی
نه بابا چی چی رو راه نداره.
این هم کد گرفتن 2 رقم اعشار
MessageBox.Show(string.Format("{0:n2}",3.14159 ));
این کد رو من تو سی شارپ زدم ولی یک error داد و اونم اینه که بجای عدد 3.14159 باید از یک رشته استفاده بشه
البته وقتی من رشته گذاشتم بازم جواب نداد
کسی نمیدونه چه تابعی یک عدد اعشار رو فقط تا دو رقم نشون میده ؟!؟!؟
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
دوستان کافی بود بجای این همه بحث یه نگاهی به کلاس Math می نداختین
برای اینکه فقط قسمت عددی رو جدا کنین می تونین از متد Math.Trancate استفاده کنین
چند تا متد مرتبط دیگه
j = (int)Math.Round(13.3); // j = 13
j = (int)Math.Round(13.8); // j = 14
j = (int)Math.Round(12.5); // j = 12 Nearest Even
j = (int)Math.Round(13.5); // j = 14 Nearest Even
d = Math.Round(13.834, 2); // d = 13.83
d = Math.Round(13.839, 2); // d = 13.84
d = Math.Round(13.335, 2, MidpointRounding.AwayFromZero); // d2 = 13.3
d = Math.Round(13.335, 2, MidpointRounding.ToEven); // d2 = 13.34
j = (int)Math.Truncate(13.2); // j = 13
j = (int)Math.Truncate(13.8); // j = 13
j = (int)Math.Ceiling(13.2); // j = 14
j = (int)Math.Floor(13.2); // j = 13
j = Math.DivRem(13, 3,out i); // j = 4 , i = 1 Reminder
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
نقل قول:
نوشته شده توسط
gwbasic
دوستان کافی بود بجای این همه بحث یه نگاهی به کلاس Math می نداختین
برای اینکه فقط قسمت عددی رو جدا کنین می تونین از متد Math.Trancate استفاده کنین
ممنون دوست عزیز ، ولی این توابعی که شما نوشتید جواب سوال نیست
چون تابه Round باعث روند شدن عدد ضمن جدا کردن دو رقم اعشار میشه
مثلاً عدد 20.158 تبدیل به 20.16 میشه ولی ما می خوایم تبدیل به 20.15 بشه
متوجه منظورم شدین ؟!؟!
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
گفتم که شما باید از TRancate استفاده کنید اگه دو رقم اعشار رو هم می خواین یه راه اینه که عددو در 100 ضرب کنید بعد TRancate کتید بعد بر 100 تقسیم کنید بقیه متدها ، متدهای مرتبط هستند که اشاره کردم
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
نقل قول:
نوشته شده توسط
gwbasic
گفتم که شما باید از TRancate استفاده کنید اگه دو رقم اعشار رو هم می خواین یه راه اینه که عددو در 100 ضرب کنید بعد TRancate کتید بعد بر 100 تقسیم کنید بقیه متدها ، متدهای مرتبط هستند که اشاره کردم
ممنون دوست عزیز
منم اتفاقاً همین کار رو مجبور شدم انجام بدم
خیلی لطف کردی
منظور من این بود که اون دوستمون که تاپیک رو زده، میخواسته یک تابعی بهش معرفی کنیم که این کارها رو خودش انجام بده و ما مجبور نباشیم با کد نویسی ضرب و تقسیم بر 100 کنیم
همگی موفق باشید
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
سلام دوستان عزیز
روش یا تابعی هست که بدون هیچ روند کردنی ، اعشار را حذف کنه و عدد را به صورت صحیح به ما بده؟؟
پاسخ: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری بدون رند کردن عدد
راهکاری که در بالا، جهت "نگه داشتن فقط تعدادی از ارقام اعشاری یک عدد" گفته شده را با استفاده از اکستشن متد میتوانید بصورت زیر پیاده سازی کنید.
public static class HelperExtensions
{
public static double WithDecimalDigitsOf(this double d, int numberOfDigits=0)
{
var factor = Math.Pow(10, numberOfDigits);
d *= factor;
d = Math.Truncate(d);
d /= factor;
return d;
}
}
public void UseOfNumberWithTwoDecimalDigits()
{
long Bytes = 32209599L; //sample number such as file-size
int Mega = 1024 * 1024;
var MBSize = ((double)Bytes / Mega) + " MB. (Original number)";
var BadMBSize = ((double)Bytes / Mega).ToString("0.00") + " MB. (Bad: not good in all numbers)";
var BetterMBSize = ((double)Bytes / Mega).WithDecimalDigitsOf(2) + " MB. (Better)";
MessageBox.Show(MBSize + "\n\n" + BadMBSize + "\n" + BetterMBSize);
}
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
float myFloat = 1.30452F;
string part1 = myFloat.ToString("0.00");
string part2 = myFloat.ToString().Substring(4, 2);
string part3 = myFloat.ToString().Substring(6);
MessageBox.Show(part1);
MessageBox.Show(part2);
MessageBox.Show(part3);
نقل قول: پاسخ: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری بدون رند کردن عدد
یک کلک ساده به هر اندازه اعشار میخوایید انتخاب کنید بالا اشاره کردم اینجا توضیح مبدم مثلا رقم اعشار ما هست 1.30452
حالا میخوایم فقط 1.3 برگرده
float myFloat = 1.30452F;
string part1 = myFloat.ToString().Substring(0, 3);
MessageBox.Show(part1);
:لبخند:
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
ببینید
نمیخایم تبدیل شه یا رند شه
چون باز جواب نمیده
میخایم ماهیت عددی براش بمونه
0.3 * 0.3 * 0.3 *0.3 = 1.2 باید بشه ولی میشه
ولی میشه 0.0081
اگر رند استفاده کنی میشه = 0
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
decimal x = Math.Round(2.5555, 2); // x == 2.56
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
سلام
امیدوارم این کارتون رو راه بندازه
Math.Truncate(2.669466*100)/100)
خروجی
2.66
موفق باشید
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
نقل قول:
نوشته شده توسط
fool66
سلام
امیدوارم این کارتون رو راه بندازه
Math.Truncate(2.669466*100)/100)
خروجی
2.66
موفق باشید
اقا منم دقیقا همین مشکل رو دارم.دستور شما رو به شکل زیر نوشتم تو برنامه.منتها اعشار کلا حذف شد!
a= Math.Truncate(a*100)/100)
که a متغییری هست از نوع دابل
1 ضمیمه
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
سلام
نه درست کار میکنه مگه جایی رو اشتباه وارد کنید اینم نمونه که تست کردم براتون ضمیمه کردم
موفق باشید
نقل قول: نحوه حذف تعداد اعشار مورد نطر از اعداد اعشاری
اقا دمت گرم جواب داد.البته من از این دستور زیر قبلا استفاده کرده بودم که جواب داده بود.دستور شما رو جایگزین اون کردمa= Math.Round(a, 2);
textBox1.Text = a.ToString();