Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse (https://www.delphipraxis.net/92416-c-delphi-gleiche-berechnung-aber-diff-ergebnisse.html)

Helmi 19. Mai 2007 13:44


C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse
 
Liste der Anhänge anzeigen (Anzahl: 2)
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".

Hawkeye219 19. Mai 2007 13:54

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

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

Gruß Hawkeye

fwsp 19. Mai 2007 13:54

Re: C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse
 
wird wohl an unterschiedlicher genauigkeit der gleitkomma-zahlen liegen.

Jelly 19. Mai 2007 13:55

Re: C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse
 
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.

Helmi 19. Mai 2007 13:58

Re: C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse
 
Ist Extended in Delphi nicht das gleiche Extended wie in C++?

DMW 19. Mai 2007 14:06

Re: C++/Delphi: gleiche Berechnung, aber diff. Ergebnisse
 
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...)

Helmi 19. Mai 2007 14:39

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 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