![]() |
Programmergebnise verschieden auf zwei Rechnern
Hallo zusammen,
ich stehe vor einem Problem und bekomme es so nicht gelöst, ein ähnliches hier Thema hilft mir nicht weiter. Das Programm liefert auf zwei Rechnern unterschiedliche Ergebnisse (unabhängig davon, ob es aus der Exe gestartet wurde oder aus dem Compiler. Programmiert wurde mit CodeGear™ Delphi® 2007 für Win32®: Mein Rechner: 64Bit, i5 Der andere Rechner 64Bit i7 Mein Programm macht mehrere riesige Rechnungen und zeichnet dann Wertepaare in ein TChart: - zerlegt habe ich schon - alle Variablen wurden initialisiert - die Methode wurde in Fortran entwickelt und dann in Delphi übertragen. Alle Funktionen geben bei mir extended zurück. Das sollte ja innerhalb von 64Bit-Rechnern kein Problem darstellen oder? Bei meinem Rechner jedenfalls ist die Funktion, die in das TChart gezeichnet wird ohne Sprünge etc, bei dem anderen Rechner tritt ein ziemlich heftiges Gezackel auf. Dh die Werte der Funktion werden falsch berechnet. Woran kann das liegen? Ich habe auch bei allen ganzen Zahlen zB 2.0 anstatt von 2 genommen! Vielen Dank für Eure Hilfe! |
AW: Programmergebnise verschieden auf zwei Rechnern
gelöscht
|
AW: Programmergebnise verschieden auf zwei Rechnern
Zitat:
Zitat:
|
AW: Programmergebnise verschieden auf zwei Rechnern
Und wenn du mal testweise auf Double umstellst und schaust ob die Ergebnisse dann gleich sind?
Erstellst du aus auf dem 64-Bit Rechner einer 64-Bit exe, oder eine 32 Bit exe? Bei 64-Bit Delphi gibt es Extended nämlich nicht mehr, bzw. Extended = Double. |
AW: Programmergebnise verschieden auf zwei Rechnern
Wie groß werden denn die Zahlen? Tritt hier vielleicht ein Überlauf auf?
![]() Hier steht, dass Extended sehr vom System abhängt. Vielleicht mal mit Double versuchen, sofern der Zahlenbereich ausreicht? Und hier: ![]() Falls es das nicht ist, gab es nicht bei einigen neueren CPUs (Skylake) Probleme bei großen Berechnungen? |
AW: Programmergebnise verschieden auf zwei Rechnern
Huhu,
vielen Dank schonmal... @NeutralGeneral: Wie würde man denn herausfinden welche .exe man erstellt? Dann erstelle ich wahrscheinlich eine 32Bit-Exe, weil wenn ich auf double umstelle, bekomme ich auch die Sprünge in der Funktion, daher hatte ich extended genommen. Dann wird es wahrscheinlich an dem Überlauf liegen oO Im Result kommen nachher Werte bis etwa 10000 heraus. Kann man um den Überlauf zu umgehen einfach die betroffenen Werte reduzieren (zB geteilt durch 10000) und nachher wieder draufrechnen? |
AW: Programmergebnise verschieden auf zwei Rechnern
Zitat:
Gruß K-H |
AW: Programmergebnise verschieden auf zwei Rechnern
Du kannst auch in den Projektoptionen unter Compiler mal die Range-Checks und Overflow-Checks aktivieren, dann sollte ja zur Laufzeit ein Fehler kommen, sofern es daran liegt.
|
AW: Programmergebnise verschieden auf zwei Rechnern
@p80286 :
Auf dem i7 ist garkein Delphi installiert ^^ |
AW: Programmergebnise verschieden auf zwei Rechnern
Delphi 2007 (also Delphi Version 12.0) erstellt keine 64-Bit EXEs, also kann das auch nicht das Problem sein.
Ein-und-dasselbe Programm kann allerdings auf verschiedene Rechnern unterschiedliche Ergebnisse liefern, dies habe ich schon oft für verschiedene Processoren gesehen (allerdings eigentlich immer Intel vs AMD, nicht für zwei Intel), hier wird wahrscheinlich der interne Code für Standardfunktionen wie sin, exp usw. leicht unterschiedlich sein. Intel garantiert mW nicht, daß diese Funktionen korrekt gerundet sind. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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