Sto attraversando un periodo di difficoltà con le dichiarazioni di formattazione in Fortran.Fortran dimezza il risultato in asterischi: perché?
senza formattare la mia uscita, questo è quello che faccio (all'interno di un ciclo, quindi questo accade un paio di volte):
write(*,*) t*1E9
t
qui è real*8
. L'uscita è proprio quello che mi aspettavo - incrementi di 0,1, con alcuni errori di arrotondamento:
0.0000000000000000
0.10000000000000001
0.20000000000000001
0.29999999999999999
0.40000000000000002
0.50000000000000000
0.59999999999999998
0.69999999999999996
0.79999999999999993
0.89999999999999991
0.99999999999999989
Ora, provo ad aggiungere un'istruzione di formato:
write(*, '(F1.2)') t*1E9
e (con tutto il resto lo stesso) invece ho solo asterischi nella mia uscita:
**
**
(etc...)
ho cercato di leggere su come questo dovrebbe funzionare, e non riesco a capire perché questo sta accadendo. Ho provato i formati con più spazio per le cifre (F15.15
mi dà solo più asterischi per riga), ho provato a spostare l'istruzione di formato sulla propria riga etichettata ... Non riesco a ottenere l'output I ' mi piace
Cosa mi manca qui?
Grazie! Questo spiega molto =) Tuttavia, non mi aiuta fino in fondo - quando applico gli stessi principi, sebbene con es. 'E5.4', per altri doppi (es.' Real * 8's), una colonna con ordine di magnitudine 1e-2 - 1e-3 e una con ordine di magnitudine 1e2, fornisce med asterischi per quelle colonne (il tempo la colonna funziona come previsto). La mia intera stringa di formato al momento: 'F4.2, E10.8, E10.8'. –
Per il formato E l'ampiezza di campo deve essere almeno 7 in più del numero di decimali, ad es. E15.8. Quattro per l'esponente, due per il primo 0. uno per un possibile '-'. Di solito aggiungo un altro spazio in più in modo che i numeri non corrano insieme, E16.8 .. – agentp
Questo lo spiega - grazie! –