AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DUnit und Fließkommazahlen Problem

Ein Thema von TurboMagic · begonnen am 25. Sep 2022 · letzter Beitrag vom 25. Sep 2022
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#4

AW: DUnit und Fließkommazahlen Problem

  Alt 25. Sep 2022, 12:13
Verwende besser DUnitX, nicht mehr DUnit.

Das DUnit im Delphi 11.2 ist scheinbar 11 Jahre alt
und selbst https://sourceforge.net/projects/dunit/ ist seit 8 Jahren tot.

Wobei DUnitX, im Delphi mitgeliefert, ist auch 7 Jahre alt ,
also besser gleich von https://github.com/VSoftTechnologies/DUnitX/


ich wüsste jetzt nichtmal, wo man hier die Fehler melden sollte. (von Emba erwarte icht keine Fehlerbehebung)

alleine diese eine Funktion:
Zitat von BugReport:
bitte Delta beachten oder Math.SameValue verwenden
Delphi-Quellcode:
procedure TAbstractTest.CheckEquals( expected,
                                     actual : extended;
                                     delta : extended;
                                     msg : string = '');
begin
  FCheckCalled := True;
  if delta = 0 then
    delta := DoubleResolution;
  if not ((expected = Infinity) and (actual = Infinity)) then
    if ((expected = Infinity) and (actual <> Infinity)) or
       ((expected <> Infinity) and (actual = Infinity)) or
       (abs(expected-actual) > delta) then
      FailNotEquals(FloatToStr(expected), FloatToStr(actual), msg, ReturnAddress);
end;
Aber falls wirklich jemand "genau" prüfen will, dann
Delphi-Quellcode:
procedure TAbstractTest.CheckEquals( expected,
                                     actual : extended;
                                     delta : extended;
                                     msg : string = '');
begin
  FCheckCalled := True;
  if delta = NaN then
    delta := DoubleResolution;
  if not ((expected = Infinity) and (actual = Infinity)) then
    if ((expected = Infinity) and (actual <> Infinity)) or
       ((expected <> Infinity) and (actual = Infinity)) or
       (abs(expected-actual) > delta) then
      FailNotEquals(FloatToStr(expected), FloatToStr(actual), msg, ReturnAddress);
end;

procedure TAbstractTest.CheckEquals(expected, actual: extended; msg: string);
begin
  CheckEquals(expected, actual, NaN, msg);
end;

Zitat:
  if not ((expected = Infinity) and (actual = Infinity)) then
Was ist mit NaN und NegInfinity?


Zitat:
Delphi-Quellcode:
procedure TAbstractTest.CheckEquals( expected,
                                     actual : extended;
                                     delta : extended;
                                     msg : string = '');
const
  Infinity = 1.0 / 0.0;
begin
Warum wird Infinity hier neu deklariert, anstatt System.Math.Infinity zu verwenden?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz