View Full Version : گرد کردن اعداد صحیح
  
Mask
چهارشنبه 04 فروردین 1389, 03:39 صبح
با سلام
میدونم که از نظر ریاضی این حرف معنی نداره.(چون گرد کردن مخصوص اعداد اعشاریه)
اما میخام مثلا اگه عدد 123 برنامم گرفت تبدیل بشه به 120
یا اگه 128 گرفت تبدیل بشه به 130
منظورم اینه که اگه عدد آخر کمتر از 5 بود بشه 0 و اگه بیشتر از 5 بود بشه 10.
ممنون از جوابتون.
Felony
چهارشنبه 04 فروردین 1389, 08:17 صبح
نمیدونم برای این کار تابعی هست یا نه ( احتمالا هست )  ولی من یه تکه کد نوشتم و درست کار میکنه :
Function RoundNumber(Number: String): String;
var
  Num1,Num2: Byte;
begin
  Num1:= StrToInt(Number[Length(Number)]);
  Num2:= StrToInt(Number[Length(Number)-1]);
  if Num1>= 6 then Inc(Num2);
  Result:= Copy(Number,0,Length(Number)-2)+ IntToStr(Num2)+'0';
end;
Hadi_Fayyaz
چهارشنبه 04 فروردین 1389, 15:14 عصر
با سلام
میدونم که از نظر ریاضی این حرف معنی نداره.(چون گرد کردن مخصوص اعداد اعشاریه)
اما میخام مثلا اگه عدد 123 برنامم گرفت تبدیل بشه به 120
یا اگه 128 گرفت تبدیل بشه به 130
منظورم اینه که اگه عدد آخر کمتر از 5 بود بشه 0 و اگه بیشتر از 5 بود بشه 10.
ممنون از جوابتون.
سلام دوست عزيز
يه راه حل اينه كه اول عددت رو بر ده تقسيم كني بعد اون رو گرد كني و بعد دوباره در 10 ضرب كني
روتين زير يه عدد از يك Edit دريافت ميكنه و اون رو به همون صورت كه شما ميخوايد گرد ميكنه 
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetRoundMode(rmUP);
  Edit1.Text:=IntToStr(Round(StrToInt(Edit1.Text)/10)*10);
end;
doosbedari
سه شنبه 02 مهر 1392, 20:50 عصر
دوستان همه يه منظورو دارن ولي به روش هاي مختلف
يكي زحمت بكشه يه فايل براي دانلود برا همه بذاره،بقيه استفاده كنن و تغييرش بدن
اصل دوستان اينو مي خوان كه 
هر عددي رو خواستم به هر عدد رندي تبديل كنند
مثال 
1252 بشه 1260  يا 1300
16525 بشه   16530   يا 16600 يا 17000
1265347   بشه   1265350  يا  1265400  يا  1266000  يا 127000  يا  130000
و تعداد رقم هاي رند  كردن دست خودشون باشه !! 						
مثال آخري 
از راست به چپ 
1رقم  يا   2رقم   يا  3رقم   يا    4رقم
doosbedari
سه شنبه 02 مهر 1392, 20:56 عصر
يه چيزي مثل اين
Label1.Caption = Math.Round(Text1.Text, 3)
ولي برا اعداد صحيح
MohsenB
سه شنبه 02 مهر 1392, 23:37 عصر
سلام
چقدر کیف میکنم از حل اینجور سوالات ، به آدم انرژی میده :
برای توضیح ، یه حالت ساده برای فقط رقم یکان :
i2:= Round(i1 / 10) * 10;
حالا میشه از همین روش یه تابع قدرتمند و ساده نوشت :
function mbRound(iValue :Integer; iStep :Byte = 1):Integer;
var vStep   :Integer;
begin
  vStep:= Floor(Power(10, iStep));
  Result:= Round(iValue / vStep) * vStep;
end;
موفق باشید
Ananas
چهارشنبه 03 مهر 1392, 01:31 صبح
سلام.
pascal
function RoundToNum(X: Integer; RoundParam : Integer = 10):Integer;
begin
  Result := (X div RoundParam) * RoundParam;
  if (((X - Result) * 2) > RoundParam) then
    Result := Result + RoundParam;
end;
C++
int RoundToNum(int X, int RoundParam)
{
    int Result = int(X / RoundParam) * RoundParam;
    if (((X - Result) * 2) > RoundParam)
      Result += RoundParam;
    return Result;
};
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.