![]() |
![]() ![]() ![]() ![]() |
|
Корректное округление чиселDelphi , Синтаксис , МатематикаКорректное округление чисел
Оформил: DeeCo
{
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, которая стремится исправить стандартное поведение округления функции Функция Функция Программа включает два процедура, Вот некоторые предложения по улучшению кода:
В целом, предоставленный код - это хороший старт в решении проблемы стандартного округления в Delphi. Однако он может быть улучшен с помощью лучших практик программирования, комментирования и тестирования. Корректное округление чисел в Delphi: описано функцию DoRound, которая корректирует округление чисел, а также предлагается альтернативный способ rounding с использованием функции RoundUp. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||