![]() |
Re: Rechenfehler
Zitat:
Wenn man im Beispiel-Code a als Double deklariert, tritt der Fehler nicht auf. Und warum nicht ?: Schauen wir uns doch mal an was beim 13. Durchlauf passiert: 1) 1.55 wird in die FPU geladen. (da 1.55 binär nicht exakt darstellbar ist, ein Wert knapp unter 1.55) 2) Es wird mit a multipliziert. 3) Das Ergebnis, ist der gleiche Wert, als wäre a ein Extended-Wert, also knapp unter 1043026 4) Jetzt wird dieses Ergebnis wieder in a gespeichert. Wäre a ein extended-Wert, würde simpel der Inhalt des FPU-Registers gespeichert. Da a aber "nur" ein Double ist, muß gerundet werden, was in diesem Fall die Ungenauigkeit beseitigt. |
Re: Rechenfehler
Liste der Anhänge anzeigen (Anzahl: 1)
Schaue mal auch in den Anhang als anderes Beispiel
|
Re: Rechenfehler
omg, amateurprofi, hast recht. als double gibts kein problem... THX!!!
|
Re: Rechenfehler
Zitat:
Der c++ long double ist ein 80 Bit-Wert, was mich vermuten läßt, daß er identisch ist, mit dem extended, der ja exakt das FPU-Register abbildet, also sollte beim 13. Durchlauf auch das gleiche Ergebnis kommen. Ich hab kein c++, sonst würde ich mir mal mit dem Debugger anschauen, was da genau gemacht wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:23 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