Mir fällt es schwer, mich mit Formatierungen in Fortran zu beschäftigen.Fortran splats meine Ausgabe auf Sternchen - warum?
Ohne meine Ausgabe Formatierung, ist das, was ich zu tun (in einer Schleife, so geschieht dies ein paar Mal):
write(*,*) t*1E9
t
hier ist real*8
. Der Ausgang ist genau das, was ich erwarten würde - Schritte von 0,1, wobei einige Rundungsfehlern:
0.0000000000000000
0.10000000000000001
0.20000000000000001
0.29999999999999999
0.40000000000000002
0.50000000000000000
0.59999999999999998
0.69999999999999996
0.79999999999999993
0.89999999999999991
0.99999999999999989
Jetzt versuche ich, ein Format Anweisung hinzuzufügen:
write(*, '(F1.2)') t*1E9
und (mit allem anderen den gleichen statt) bekomme ich nur Sternchen in meiner Ausgabe:
**
**
(etc...)
ich habe versucht, auf zu lesen, wie das funktionieren soll, und ich kann nicht herausfinden, warum dies geschieht. Ich habe versucht, Formate mit mehr Platz für Ziffern (F15.15
gibt mir nur mehr Sterne pro Zeile), ich habe versucht, die Formatanweisung zu seiner eigenen, beschriftete Zeile zu bewegen ... Ich kann einfach nicht scheinen, um die Ausgabe zu erhalten I ' d wie.
Was fehlt mir hier?
Vielen Dank! Das erklärt viel =) Jedoch hilft es mir nicht den ganzen Weg - wenn ich die gleichen Prinzipien anwende, obwohl mit z. 'E5.4', für andere Doubles (dh' real * 8's), eine Spalte in der Größenordnung 1e-2-1e-3 und eine in der Größenordnung 1e2, gibt es Med-Sternchen für diese Spalten (die Zeit Spalte funktioniert wie erwartet). Meine gesamte Formatzeichnung im Moment: 'F4.2, E10.8, E10.8'. –
Für das E-Format muss die Feldbreite mindestens 7 mehr als die Anzahl der Dezimalstellen betragen, zB E15.8. Vier für den Exponenten, zwei für den Vorsprung 0. Eins für ein mögliches '-'. Ich füge normalerweise einen zusätzlichen Platz hinzu, damit Zahlen nicht zusammen laufen, E16.8 .. – agentp
Das erklärt es - danke! –