Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Fließkommazahlen auf Gleichheit prüfen

  Alt 13. Nov 2006, 00:52
Zitat von fwsp:
bei mir ist folgendes ungleich:
Delphi-Quellcode:
var
  a, b: Real;

begin
  a := 12345789.987654321;
  b := 24691357.9975308642 / 2;

  if a = b then
    Writeln('gleich')
  else
    Writeln('ungleich');
  Readln;
end.
Bei mir aber nicht:
Delphi-Quellcode:
var
  a, b: Double;

begin
  a := 12345789.987654321;
  b := 24691579.975308642 / 2;

  Writeln('a: ', a);
  Writeln('b: ', b);
  if a = b then
    Writeln('gleich')
  else
    Writeln('ungleich');
  Readln;
Ausgabe:
Code:
a: 1.23457899876543E+0007
b: 1.23457899876543E+0007
gleich
Du hast dich vertan. Zwei mal 12345789.987654321 ist nicht 24691357.9975308642 sondern 24691579.975308642.

@Dax auch dein Beispiel ergibt 'gleich'.

EDIT: Übrigens das Beispiel von dieser Seite: http://www.mpdvc.de/artikel/FloatingPoint.htm funktioniert in Delphi auch nicht, aber in C. Wo liegt der Unterschied bei der Zahlenbehandlung von Delphi und C?

Im Anhang mal mein Artikel als PDF zu der Prolematik.
Angehängte Dateien
Dateityp: pdf vergleichfliesskommazahlen_106.pdf (82,3 KB, 36x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat