PDA

View Full Version : روند کردن یک عدد به صورت بالا و پایین



pouria_bayat
یک شنبه 30 فروردین 1394, 20:38 عصر
سلام دوستان، من میخواهم یک عدد تصاوفی به صورت متغیر Long که میتونه بین 1 تا 500000 باشه رو روند کنم اما شرایط رند کردن عدد باید به این صورت باشه که فرضا در رند پایین اگر عدد تصادفی 830 یا مثلا 840 بود اونرو 800 نشون بده و یا در رند بالا اونو 850 نشون بده. در حقیقت میخواهم یک جورایی تناسب قیمت ایجاد کنم که از شر پول خرد خلاص بشم. فرضا در برنامه ای که نوشتم کاربر با خرید و درصد تخفیفی که میگره 8320 تومان هزینه تمام میشه که یک جورایی میخواهم برنامه این قابلیت رو داشته باشه که پول خرد رو از بین ببره حداقل تا 50 تومان.

saied_hacker
یک شنبه 30 فروردین 1394, 22:27 عصر
این دو رقم آخر رو گرد می کنه
شما باید 2 رقم اخر رو در بیاری - برای گرفتن یکان
int rem = rnd % 10;

بعد باید یکان رو حدق کنی تا بتونی رقم دوم از راست رو خارج کنی
// remove last digit
int tempRnd = rnd;
rnd/= 10;
یه عمل ریاضیه
این کد امیدوارم به کارت بیاد

int rnd = (new Random()).Next(1, 500000); if (rnd > 50)
{
// pop last digit
int rem = rnd % 10;






// remove last digit
int tempRnd = rnd;
tempRnd /= 10;


// pop second/last digit
int rem2 = tempRnd % 10;




rem = (rem2 * 10 ) + rem;
tempRnd = rnd;


if (rem < 50)
tempRnd -= rem;
else
tempRnd += (100 - rem);


MessageBox.Show("RndNum: " + rnd + "\nRounded: " + tempRnd);
}

Javad_raouf
دوشنبه 31 فروردین 1394, 08:38 صبح
بیا عزیزم:
long rnd = (new Random()).Next(1, 500000);

float roundBase = 50;
long Rounded = (long)(Math.Round(rnd / roundBase, 0) * roundBase);
MessageBox.Show("RndNum: " + rnd + "\nRounded: " + Rounded);
roundBase هر چی باشه نسبت به همون رند میشه
توی کد بالا نسبت به 50 رند میشه مثلا اگر می خوای کمتر از 500 تومن پول خرد نداشته باشه این متغیر رو بزار 500
به همین راحتی

Javad_raouf
دوشنبه 31 فروردین 1394, 08:41 صبح
کد بالا کد گرد کردن یا همون رند کردن بود
این کد رند پایین:
long rnd = (new Random()).Next(1, 500000);

float roundBase = 50;
long Rounded = (long)(Math.Floor(rnd / roundBase) * roundBase);
MessageBox.Show("RndNum: " + rnd + "\nRounded: " + Rounded);
این کد رند بالا:
long rnd = (new Random()).Next(1, 500000);

float roundBase = 50;
long Rounded = (long)(Math.Ceiling(rnd / roundBase) * roundBase);
MessageBox.Show("RndNum: " + rnd + "\nRounded: " + Rounded);