Frage von mAin0x, 11

Was koennte das Problem beim Fortran- Compiler sein?

Wenn ich eine Variable oder Konstante vom Typ real initialisiere und diese ausgebe wird sie immer falsch ausgegeben!

z.B. : real, parameter :: pi = 3.142 = 3.14199996 real (kind = 8) :: a = 8.9191722 = 8.9191722869873047

Antwort
von maximilianus7, 3

das ist normal: der kompiler muss die dezimalschreibweise in das interne real-format umrechnen, daas ist ein format auf basis des 2-er systems. das ist zwangsläufig mit einer rechenungenauigkeit  verbunden.

bei der ausführung willst du den inhalt wieder in dezimalschreibweise sehen, also wird nochmal umgerechnet - wieder mit rundungsfehler - und dann noch mit mehr dezimalstellen als bei der ursprünglichen konstanten.

das wird dir in allen programmiersprachen begegnen.

ausnahme ist, wenn die dezimalschreibweise auch intern benutzt wird, prozessoren von großrechner unterstützen sowas, ev. auch dein fortran, schau mal nach datentyp "decimal"

Kommentar von Franz1957 ,

Ein Stichwort, unter dem man mehr darüber findet, ist BCD (binary-coded decimal). Es gibt mehrere Arten, das zu machen. Bei packed BCD (packed decimal) werden zwei Dezimalstellen pro Byte gespeichert. In COBOL und PL/I gehören intern dezimal codierte Zahlen zu den normalen Datentypen.

Keine passende Antwort gefunden?

Fragen Sie die Community