AGB  ·  Datenschutz  ·  Impressum  







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

Rechenfehler

Ein Thema von rado · begonnen am 27. Okt 2005 · letzter Beitrag vom 27. Okt 2005
Antwort Antwort
rado

Registriert seit: 18. Mär 2005
10 Beiträge
 
#1

Rechenfehler

  Alt 27. Okt 2005, 13:17
Hallo,

ich erhalte einen Rechenfelher bei folgendem Code:

var
gesamtlaenge: extended;

gesamtlaenge:=gesamtlaenge+strtofloat(edit9.text);

Wenn man in edit9 den Wert 2,36 eingibt und anschließend die Addition ausführt und dann in edit9 -2,36 eingibt müsste man 0 als Ergebnis in gesamtlaenge erhalten.
Es steht aber in gesamtlaenge -1,242E-16

Dies passiert aber nur bei 2,36.
Kann mir jemand weiterhelfen, enthalten die Mathematischen Bibliotheken von Delphi Fehler?

Gruß rado
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Rechenfehler

  Alt 27. Okt 2005, 13:23
Zitat:
Kann mir jemand weiterhelfen, enthalten die Mathematischen Bibliotheken von Delphi Fehler?
Mit Sicherheit nicht...
Welchen Wert hat denn gesamtlaenge wenn 2,36 hinzuaddiert wird ? Außerdem schau mal in der DelphiHilfe nach StrToFloatF.

EDIT : StrToFloatF -.- Gehts mir noch gut ?^^ Sry das war Schwachsinn... überlest das hier einfach
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Rechenfehler

  Alt 27. Okt 2005, 13:24
das sind übliche Rundungsfehler
Delphi-Quellcode:
function NullVal(const Value,Epsilon: Extended): Extended;
begin
  if Abs(Value)<Epsilon then Result := 0
                        else Result := Value;
end;
//EDIT
Aufruf:  A := NullVal(A,1E-10);
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Rechenfehler

  Alt 27. Okt 2005, 13:30
Zitat von rado:


Delphi-Quellcode:
var
  gesamtlaenge: extended;

procedure TForm1.Button1Click(Sender: TObject);
begin
  gesamtlaenge:=gesamtlaenge+strtofloat(edit9.text);
end
Wenn man in edit9 den Wert 2,36 eingibt und anschließend die Addition ausführt und dann in edit9 -2,36 eingibt müsste man 0 als Ergebnis in gesamtlaenge erhalten.
Es steht aber in gesamtlaenge -1,242E-16

Dies passiert aber nur bei 2,36.
Kann mir jemand weiterhelfen, enthalten die Mathematischen Bibliotheken von Delphi Fehler?

Gruß rado
Nein kann ich nicht, den bei mir funktioniert dein Code eigentlich einwandfrei evtl. spuckt ja noch was anderes aus deinem Proggie da rein?
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
rado

Registriert seit: 18. Mär 2005
10 Beiträge
 
#5

Re: Rechenfehler

  Alt 27. Okt 2005, 13:57
Zitat von Neutral General:
Zitat:
Kann mir jemand weiterhelfen, enthalten die Mathematischen Bibliotheken von Delphi Fehler?
Mit Sicherheit nicht...
Welchen Wert hat denn gesamtlaenge wenn 2,36 hinzuaddiert wird ? Außerdem schau mal in der DelphiHilfe nach StrToFloatF.

EDIT : StrToFloatF -.- Gehts mir noch gut ?^^ Sry das war Schwachsinn... überlest das hier einfach

Die Variable ist mit 0 gefüllt.
gesamtlaenge:=0;

Gruß rado
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Rechenfehler

  Alt 27. Okt 2005, 14:03
Ich kram dann nochmals, wie ich es gern mache, diesen Post raus . Eine 0 lässt sich als Float nicht darstellen. Dafür wird ein Flag in der FPU geführt, welches aber idR nur gesetzt wird, wenn man direkt eine 0 zuweist, oder die Rechnung trotz aller Ungenauigkeiten genau auf 0 kommt. Gewährleistet ist das allerdings nicht.

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:22 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