Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Корректное округление чисел

Delphi , Синтаксис , Математика

Корректное округление чисел

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  The function Round of the Delphi doesn't work 
  like it is usually expected. 
  The odd numbera are rounded down and the even numbers up. 

  Die Round Funktion in Delphi gibt normalerweise nicht 
  die erwartete Zahl zurьck. 
  Die ungeraden Zahlen werden abgerundet, die geraden aufgerundet 

  Example/ Beispiel: 

  x:= Round(17.5) = x = 18 

  x:= Round(12.5) = x = 12 
}

 function DoRound(const X: Extended): Int64;
 begin
   Result := 0;
   if X0 then
     Result := trunc(X + 0.5);
   if Xthen
     Result := trunc(X - 0.5);
 end;


 procedure TForm1.Button1Click(Sender: TObject);
 begin
   ShowMessage(FormatFloat('0.00', DoRound(17.5)));  // - 18 
  ShowMessage(FormatFloat('0.00', DoRound(12.5)));  // - 13 

  //This rounds every value to 0.05 steps 
  //Rundet in 0.05 Schritten 
  ShowMessage(FormatFloat('0.00', Round(17.22 / 0.05) * 0.05)); // - 17.20 
end;


 {***Another function:***}

 function RoundUp(Value: Extended): Int64;
   procedure Set8087CW(NewCW: Word);
   asm
          MOV     Default8087CW,AX
          FNCLEX
          FLDCW   Default8087CW
  end;
 const
   RoundUpCW = $1B32;
 var
   OldCW: Word;
 begin
   OldCW := Default8087CW;
   try
     Set8087CW(RoundUpCW);
     Result := Round(Value);
   finally
     Set8087CW(OldCW);
   end;
 end;

 procedure TForm1.Button2Click(Sender: TObject);
 begin
   ShowMessage(FormatFloat('0.00', RoundUp(19.32)));  // - 19 
end;

Статья Корректное округление чисел раздела Синтаксис Математика может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Математика ::


реклама

::


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
05.07.2020 11:02:42/0.011809825897217/0