AGB  ·  Datenschutz  ·  Impressum  







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

Delphi rechnet falsch

Ein Thema von Borti · begonnen am 5. Jan 2005 · letzter Beitrag vom 5. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#1

Delphi rechnet falsch

  Alt 5. Jan 2005, 11:08
Hallo!
mir ist grad ein sehr merkwürdiges Phänomen aufgefallen:

Code:
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;
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?
gruß,
Borti
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat
Benutzerbild von Darty
Darty

Registriert seit: 8. Jun 2002
Ort: Kronau
731 Beiträge
 
#2

Re: Delphi rechnet falsch

  Alt 5. Jan 2005, 11:10
Hast ein Intel Prozessor mit dem berühmten Pentium Rechen Fehler ?

Ne das ist wirklich komisch
Matthias Knebel
Mfg M. Knebel [-Darty-]
- Gehörlose Delphianer gibt es selten -
www.team-knebel.de
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#3

Re: Delphi rechnet falsch

  Alt 5. Jan 2005, 11:16
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).
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Delphi rechnet falsch

  Alt 5. Jan 2005, 11:17
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;
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#5

Re: Delphi rechnet falsch

  Alt 5. Jan 2005, 11:17
löse es so:

panel1.Caption := FloatToStrF(Ergebnis,ffFixed,15,0); MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#6

Re: Delphi rechnet falsch

  Alt 5. Jan 2005, 11:18
ah! super! funktioniert!

Danke!
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Delphi rechnet falsch

  Alt 5. Jan 2005, 11:19
Zitat:
deswegen vergleicht man zwei double-werte auch nie per (a=b) sondern immer (Abs(a-b) < eps).
Und warum ist das so???
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#8

Re: Delphi rechnet falsch

  Alt 5. Jan 2005, 11:20
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 )
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Delphi rechnet falsch

  Alt 5. Jan 2005, 11:21
Zitat:
deswegen vergleicht man zwei double-werte auch nie per (a=b) sondern immer (Abs(a-b) < eps).
genial.. wusste ich jetzt auch noch nicht, hab mir aber in der richtung schon was gedacht..

eps ist epsilon, womich ich jetzt nicht soviel anfangen kann, aber dein weg ist richtig und sollte wirklich in jedem anfängerhandbuch stehen
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Chegga
Chegga

Registriert seit: 5. Nov 2004
Ort: Kirchheim
453 Beiträge
 
Delphi 7 Architect
 
#10

Re: Delphi rechnet falsch

  Alt 5. Jan 2005, 11:23
Hi,

Zitat:
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!
[Edit]Die vielen Punkte dienen dafür, dass _ über der 9 steht[/Edit]
. . . . . . . . . . . . . . . . . . . . . . . _
Mathematisch gesehen ist 0.9 (Periode),
das Gleiche wie 1.
Aber warum Delphi das so macht?
(Wenn es überhaupt an Delphi liegt! )

MfG Marc

P.S.: Die Lösung können wir jetzt, aber warum zeigt es Delphi so an??
Marc P.
Grüße aus Kirchheim Teck
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz