Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как округлить полученный результат до 3 знаков


Автор: Serhik_z 1.3.2005, 15:08
Подскажите как округлить полученный результат до 3 знаков после запятой.
Код

// получить исходные данные из полей ввода
m:= StrToFloat(RxCalcEdit1.Text);
k:= StrToFloat(RxCalcEdit2.Text);
i:= StrToFloat(RxCalcEdit3.Text);
// предварительные преобразования
c:= Trunc(m);
d:= Trunc(m/2) mod 10000;
// вычисление
v:=sin(((k+i/60)*pi)/180)*4.0425/m;
v:= ??? // Подскажите как округлить полученный результат до 3 знаков после запятой.
for aa:=20 to 100 do
  for bb:=20 to 100 do
    for cc:=20 to 100 do
      for dd:=20 to 100 do
        if ((aa*bb)/(cc*dd)) = v then
         if (aa<>bb) and (cc<>dd) then
          Memo1.Lines.Add(Format('  %d x %d / %d x %d',[aa,bb,cc,dd]));

end;

smile

Автор: Snowy 1.3.2005, 15:14
Код

m:= StrToFloat(RxCalcEdit1.Text);
k:= StrToFloat(RxCalcEdit2.Text);
i:= StrToFloat(RxCalcEdit3.Text);
// предварительные преобразования
c:= Trunc(m);
d:= Trunc(m/2) mod 10000;
// вычисление
v:=sin(((k+i/60)*pi)/180)*4.0425/m;
for aa:=20 to 100 do
  for bb:=20 to 100 do
    for cc:=20 to 100 do
      for dd:=20 to 100 do
        if FormatFloat('0.000',(aa*bb)/(cc*dd)) = FormatFloat('0.000',v) then
         if (aa<>bb) and (cc<>dd) then
          Memo1.Lines.Add(Format('  %d x %d / %d x %d',[aa,bb,cc,dd]));

Или так:
Код

m:= StrToFloat(RxCalcEdit1.Text);
k:= StrToFloat(RxCalcEdit2.Text);
i:= StrToFloat(RxCalcEdit3.Text);
// предварительные преобразования
c:= Trunc(m);
d:= Trunc(m/2) mod 10000;
// вычисление
v:=sin(((k+i/60)*pi)/180)*4.0425/m;
v:=StrToFloat(FormatFloat('0.000',v));
for aa:=20 to 100 do
  for bb:=20 to 100 do
    for cc:=20 to 100 do
      for dd:=20 to 100 do
        if ((aa*bb)/(cc*dd)) = v then
         if (aa<>bb) and (cc<>dd) then
          Memo1.Lines.Add(Format('  %d x %d / %d x %d',[aa,bb,cc,dd]));


Добавлено @ 15:17
Первый вариант лучше, т.к. округляются и левая и правая часть.
Добавлено @ 15:21
Еще вариант smile
Код

v:=Round(sin(((k+i/60)*pi)/180)*4.0425/m*1000)/1000;

Автор: Serhik_z 1.3.2005, 15:49
Snowy - Большое Спасибо!
smile smile smile

Автор: Underdark 1.3.2005, 17:15
Цитата
Еще вариант

Код

v:=Round(sin(((k+i/60)*pi)/180)*4.0425/m*1000)/1000;


Только так всегда и спасаюсь! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)