![]() |
Delphi rechnet falsch
Hallo!
mir ist grad ein sehr merkwürdiges Phänomen aufgefallen:
Code:
Ich hab die werte der Variabeln Zahl1 und zahl2 so gewählt, dass in diesem code-beispiel als ergebnis 1 rauskommen müsste. Das Panel zeigt aber 0.9999999..... an! wisst ihr, was der grund dafür sein könnte?
procedure TForm1.Button1Click(Sender: TObject);
var Ergebnis,Zahl1,Zahl2:real; begin Zahl1:=0.575; Zahl2:=0.675; Ergebnis:=0.100/(Zahl2-Zahl1); panel1.Caption:=floattostr(Ergebnis); end; gruß, Borti |
Re: Delphi rechnet falsch
Hast ein Intel Prozessor mit dem berühmten Pentium Rechen Fehler ? :mrgreen:
Ne das ist wirklich komisch :gruebel: |
Re: Delphi rechnet falsch
das sind grundlagen: es liegt an der internen binärdarstellung der zahlen.
sollte man auf jeden fall wissen, wenn man programmierer ist. deswegen vergleicht man zwei double-werte auch nie per (a=b) sondern immer (Abs(a-b) < eps). |
Re: Delphi rechnet falsch
hab bei dem code das selbe ergebnis
wenn ich als variablen aber statt single, extended verwende, kommt 1 raus
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Ergebnis,Zahl1,Zahl2:extended; begin Zahl1:=0.575; Zahl2:=0.675; Ergebnis:=0.100/(Zahl2-Zahl1); label1.Caption:=floattostr(Ergebnis); end; |
Re: Delphi rechnet falsch
löse es so:
Delphi-Quellcode:
MFG Alex
panel1.Caption := FloatToStrF(Ergebnis,ffFixed,15,0);
|
Re: Delphi rechnet falsch
ah! super! funktioniert!
Danke! |
Re: Delphi rechnet falsch
Zitat:
|
Re: Delphi rechnet falsch
Solche ähnlichen Fehler kommen bei Excel oder so auch raus, hatten wir mal in der Schule.
An manchen Rechner gings, an manchen kam durch ein Rundungsfehler was falsches ;) air (obwohl alle rechner gleich sind :D ) |
Re: Delphi rechnet falsch
Zitat:
eps ist epsilon, womich ich jetzt nicht soviel anfangen kann, aber dein weg ist richtig und sollte wirklich in jedem anfängerhandbuch stehen :) |
Re: Delphi rechnet falsch
Hi,
Zitat:
. . . . . . . . . . . . . . . . . . . . . . . _ Mathematisch gesehen ist 0.9 (Periode), das Gleiche wie 1. Aber warum Delphi das so macht? :gruebel: (Wenn es überhaupt an Delphi liegt! :wink: ) MfG Marc P.S.: Die Lösung können wir jetzt, aber warum zeigt es Delphi so an?? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 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