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 24691
357.9975308642 sondern 24691
579.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.