گرد کردن عدد در #C به بالا و پایین و حد وسط
در این مقاله بصورت کامل روش های گرد کردن عدد در #C به بالا و پایین و حد وسط MidpointRounding (زمانی که می خواهید عدد شما دارای اعشار 0.5 باشد) را بررسی می کنیم و با حل مثال هایی کارکرد حالت های مختلف تابع Round را بررسی می کنیم. از روش های زیر می توانید در تمام پروژه های Net. خود از جمله Asp.net و Xamarin و غیره استفاده کنید.
توابع گرد کردن به عدد صحیح بالا و پایین
با استفاده از روش های Math.round و Math.ceil و Math.floor در برنامه نویسی دات نت می توانیم اعداد را به شکل های زیر رند کنیم:
- روش Math.round : گرد کردن به سمت نزدیکترین عدد صحیح.
- روش Math.ceil : گرد کردن به سمت بالا.
- روش Math.floor : گرد کردن به سمت پایین.
float farazgar = 1.5; ---------------|گرد کردن به بالا|------------- double up1 = Math.Ceiling(farazgar); // روش اول double up2 = Math.Round(farazgar, 0); // روش دوم ---------------|گرد کردن به پایین|------------- double down1 = Math.Floor(farazgar);
جلوگیری از صفر شدن عدد برای اعداد اعشاری زیر 1
یکی از مشکلاتی که شاید دوست نداشته باشید پیش بیاید، این است که تعیین کنید اگر عدد نزدیک به 0 بود، 0 نشود. بدین منظور از روش زیر استفاده می کنیم (جلوتر توضیحات مفصل تری می دهیم)
float farazgar = 0.15; double down1 = Math.Round(farazgar, MidpointRounding.AwayFromZero);
گرد کردن عدد در #C در حالت حد وسط MidpointRounding
تابع MidpointRounding.ToEven :
در صورتیکه مقدار اعشاری عددی میانی (5 و 50 و 500 و 5000 و ….) باشد و رقم ماقبل آخر اعشار فرد باشد، رو به بالا گرد خواهد شد و در صورتیکه رقم ما قبل آخر اعشار زوج باشد، بدون تغییر باقی خواهد ماند (3.75 به 3.8 و 3.65 به 3.6 گرد می شود.)
تابع MidpointRounding.AwayFromZero :
در صورتیکه مقدار اعشاری عددی میانی (5 و 50 و 500 و 5000 و ….) باشد، در این حالت همواره عمل گرد کردن به سمت رقم بعدی خواهد بود.
به مثال های زیر توجه کنید:
// The example displays the following output: // 2.125 --> 2.13 // 2.135 --> 2.13 // 2.145 --> 2.15 // 3.125 --> 3.13 // 3.135 --> 3.14 // 3.145 --> 3.15 This code example produces the following results: 3.4 = Math.Round( 3.45, 1) -3.4 = Math.Round(-3.45, 1) 3.4 = Math.Round( 3.45, 1, MidpointRounding.ToEven) 3.5 = Math.Round( 3.45, 1, MidpointRounding.AwayFromZero) -3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven) -3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)