Корректное округление чисел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 прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |