AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse
Thema durchsuchen
Ansicht
Themen-Optionen

C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse

Ein Thema von Helmi · begonnen am 19. Mai 2007 · letzter Beitrag vom 19. Mai 2007
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse

  Alt 19. Mai 2007, 13:44
Hallo,

ich hab ein Programm in Delphi, dass die eulerische Zahl berechnet.

Nun hab ich, aus Lust und Laune, dieses Programm mal in C++ nachprogrammiert.

Da ist mir aufgefallen, dass es unterschiedliche Ergebnisse gibt.

Aber mir ist nicht klar, warum das so ist.
Hier mal die Codes und die Programme:

Delphi-Code:
Delphi-Quellcode:
procedure TMainForm.Button_startClick(Sender: TObject);
var
  i: Integer;
  E, F: Extended ;

begin
  E := 1;
  F := 1;

  Edit_Ausgabe.Clear;

  for i := 1 to 20 do
    begin
      F := F * i;
      E := E + (1 / F);

      Edit_Ausgabe.Text := FloatToStr(E);
      Application.ProcessMessages;
      Sleep(200);
    end;
end;
C++-Code:
Delphi-Quellcode:
void __fastcall TMainForm::Button_startClick(TObject *Sender)
{
  Edit_Ausgabe->Clear();

  int i;
  float E, F;

  E = 1;
  F = 1;

  for (i=1; i<=20; i++)
    {
      F = F * i;
      E = E + (1 / F);

      Edit_Ausgabe->Text = FloatToStr(E);
      Application->ProcessMessages();
      Sleep(200);
    }

}
Bei Delphi bekomm ich "2,71828182845905" raus, bei C++ "2,71828198432922".
Angehängte Dateien
Dateityp: exe project1_363.exe (23,0 KB, 1x aufgerufen)
Dateityp: exe project1_991.exe (615,5 KB, 1x aufgerufen)
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse

  Alt 19. Mai 2007, 13:54
Hallo Helmi,

Delphi-Quellcode:
var
  i: Integer;
// E, F: Extended ;
  E, F: Single;
Besser so?

Gruß Hawkeye
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#3

Re: C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse

  Alt 19. Mai 2007, 13:54
wird wohl an unterschiedlicher genauigkeit der gleitkomma-zahlen liegen.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse

  Alt 19. Mai 2007, 13:55
Ich denk mal ein Float in C ist etwas anderes als ein extended in Delphi. Dadurch kriegst du Rundngsfehler, und das rekursive Berechnen führt dann zu einem unterschiedlichen Ergebnis.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

Re: C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse

  Alt 19. Mai 2007, 13:58
Ist Extended in Delphi nicht das gleiche Extended wie in C++?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#6

Re: C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse

  Alt 19. Mai 2007, 14:06
In sysmac.h steht:
Code:
    typedef long double         Extended;        // 10 byte real
typedef float               Single;          // 4 byte real
typedef double              Double;          // 8 byte real
Klärt das deine Fragen?

(Btw, der C-Syntaxhighlighter sollte case-sensitive sein...)
Moritz
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#7

Re: C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse

  Alt 19. Mai 2007, 14:39
danke!
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  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 18:59 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