Mam trudności z zawijaniem głowy wokół instrukcji formatowania w Fortranie.Fortran splata moje dane wyjściowe z gwiazdkami - dlaczego?
bez formatowania moje wyjście, to jest to, co robię (wewnątrz pętli, tak dzieje się kilka razy):
write(*,*) t*1E9
t
tutaj jest real*8
. Wyjście jest tylko to, czego się spodziewać - przyrosty 0.1, z pewnymi błędami zaokrągleń:
0.0000000000000000
0.10000000000000001
0.20000000000000001
0.29999999999999999
0.40000000000000002
0.50000000000000000
0.59999999999999998
0.69999999999999996
0.79999999999999993
0.89999999999999991
0.99999999999999989
Teraz próbuję dodać oświadczenie format:
write(*, '(F1.2)') t*1E9
i (ze wszystkim taki sam) zamiast tylko dostać gwiazdki w moim wyjściu:
**
**
(etc...)
próbowałem przeczytać o tym, jak to powinno działać, a ja nie mogę zrozumieć, dlaczego tak się dzieje. Próbowałem formatów z większą ilością miejsca na cyfry (F15.15
po prostu daje mi więcej gwiazdek w linii), Próbowałem przenieść oświadczenie formatu do własnej, oznaczonej linii ... Po prostu nie mogę uzyskać wyjścia I ' d jak.
Czego mi tu brakuje?
Dzięki! To wiele wyjaśnia =) Jednak nie pomaga mi to całkowicie - kiedy stosuję te same zasady, chociaż z np. 'E5.4', dla innych podwójnych (tj.' Prawdziwe * 8's), jedna kolumna o rzędzie wielkości 1e-2 - 1e-3 i jedna o rzędzie wielkości 1e2, podaje medyczną gwiazdkę dla tych kolumn (czas kolumna działa zgodnie z oczekiwaniami). Cały mój ciąg formatowania w tym momencie: 'F4.2, E10.8, E10.8'. –
Dla formatu E szerokość pola musi wynosić co najmniej 7 więcej niż liczba miejsc dziesiętnych, np. E15.8. Cztery dla wykładnika, dwa dla ołowiu 0. jeden dla możliwego "-". Zwykle dodaję jeszcze jedną dodatkową przestrzeń, żeby numery nie działały razem, E16.8 .. – agentp
To wyjaśnia - dzięki! –