Kann jemand bitte erklären, wie Fortran Daten liest, insbesondere aus Textdateien. Ich dachte, ich verstehe das Verhalten und die Formatierungsoptionen von I/O, aber das folgende Beispiel hat mich verwirrt.Fortran Float aus Textdatei lesen - Ungerades Verhalten
ich in drei Werte aus der Textdatei Domain.txt
zu lesen versucht bin, die unter
221
500.0200
500.0000
Diese Datei drei Linien dargestellt enthält, wird dann unter
program main
implicit none
integer :: N
real :: xmax,xmin
open(unit=1,file='Domain.txt')
read(1,*) N ! Read first line
read(1,*) xmax ! Read second line
read(1,*) xmin ! Read third line
print*, N
print*, xmax
print*, xmin
end program
Das Ergebnis dieser durch mein Programm lesen Programm ist
221
500.019989
500.000000
Also meine Verwirrung entsteht mit dem s zweiter Ausgang für die Variable xmax
. Warum würde es in der zweiten Zeile als 500.019989
und nicht 500.0200
lesen?
Ich habe versucht, Fortran Formatierung format(fm.d)
in der Anweisung lesen zu lesen nur in den ersten beiden Ziffern nach der Dezimalstelle lesen, aber ich war nie in der Lage, das Problem zu lösen.
Ich benutze gfortran 4.8.5. Jede Hilfe wäre willkommen. Ich weiß auch, dass dies ein Duplikat der hier gestellten Frage ist (Reading REAL's from file in FORTRAN 77 - odd results), aber ich habe nicht genug Ansehen, um eine Frage zu der Lösung zu kommentieren und zu stellen.
Möglicherweise auch verwandt ist [diese Frage] (http://stackoverflow.com/q/33319357), die auf die Genauigkeit beim Lesen von Datei schaut. – francescalus