Fortran разбивает мой вывод на звездочки-почему?
мне трудно обернуть голову вокруг операторов форматирования в Fortran.
без форматирования моего вывода, это то, что я делаю (внутри цикла, так что это происходит несколько раз):
write(*,*) t*1E9
t
здесь real*8
. Выход-это то, что я ожидал - приращения 0.1, с некоторыми ошибками округления:
0.0000000000000000
0.10000000000000001
0.20000000000000001
0.29999999999999999
0.40000000000000002
0.50000000000000000
0.59999999999999998
0.69999999999999996
0.79999999999999993
0.89999999999999991
0.99999999999999989
теперь я пытаюсь добавить оператор формата:
write(*, '(F1.2)') t*1E9
и (со всем остальным то же) вместо этого я получаю только звездочки в моем выводе:
**
**
(etc...)
Я пытался прочитать, как это должно работать, и я не могу понять, почему это происходит. Я пробовал форматы с большим пространством для цифр (F15.15
просто дает мне больше звездочек на строку), я попытался переместить оператор format в свою собственную, помеченную строку... Я просто не могу получить желаемый результат.
что я пропустила?
1 ответов
операторы формата Fortran определяются как:
Fw.d
, где w-количество символов, которые будут использоваться в общей сложности, и d-количество символов после десятичной точки. Здесь вы говорите ему, что вам нужен поплавок, то есть 1 символ в общей сложности и 2 символа после десятичной точки, что, очевидно, неправильно. Поэтому, чтобы получить, например, поплавок, который составляет 4 символа в общей сложности, с 3 десятичными знаками, вы напишете:
write(*, '(F4.3)') t*1E9
посмотреть http://www.cs.mtu.edu / ~shene/COURSES/cs201/NOTES/chap05/format.html
кроме того, я должен упомянуть, что звездочки указывают, что число не может быть отображено в указанном формате.
EDIT:
добавление в комментарий от Джорджа ниже:
" для формата E ширина поля должна быть как минимум на 7 больше, чем количество десятичных знаков, например E15.8. Четыре для экспоненты, два для ведущего 0. для возможного '-'. Обычно я добавляю еще один дополнительное пространство, чтобы числа не шли вместе, E16.8"