Как я могу выровнять по левому краю числовой вывод в фортране? - PullRequest
9 голосов
/ 29 декабря 2010

Я пишу какой-то простой вывод на фортране, но мне нужны разделители пробелов.Однако, если использовать следующее утверждение:

format(A20,ES18.8,A12,ES18.8)

Я получаю вывод, подобный этому:

p001t0000               3.49141273E+01obsgp_oden      1.00000000E+00

Я бы предпочел это:

p001t0000           3.49141273E+01   obsgp_oden  1.00000000E+00

Я пытался использовать отрицательныйзначения ширины (как в Python), но без кубиков.Итак, есть ли способ выровнять цифры влево?

Большое спасибо заранее!

Ответы [ 4 ]

8 голосов
/ 29 декабря 2010

Там не особенно красивый способ.Однако использование внутреннего оператора WRITE для преобразования числа в текстовую строку (ранее это делалось с помощью оператора ENCODE), а затем манипулирование текстом может сделать то, что вам нужно.

Цитирование http://rsusu1.rnd.runnet.ru/develop/fortran/prof77/node168.html

Внутренний файл WRITE обычно используется для преобразования числового значения в символьную строку с использованием подходящей спецификации формата, например:

  CHARACTER*8 CVAL 
  RVALUE = 98.6 
  WRITE(CVAL, '(SP, F7.2)') RVALUE

Оператор WRITE заполнит символьную переменную CVALсимволы «+98.60» (обратите внимание, что на каждом конце номера есть один пробел, первый, потому что число выровнено по правому краю в поле из 7 символов, второй, потому что запись дополняется до объявленной длины 8 символов).

Как только число превращено в символьную строку, его можно обрабатывать различными способами, описанными в разделе 7. Это позволяет, например, записывать числа, выровненные по левому краю в поле., ...

4 голосов
/ 29 декабря 2010

Это проще с Фортраном 95, но все же не тривиально. Запишите номер или другой элемент в строку с оператором записи (как в первом ответе). Затем с помощью встроенного в ADJUSTL Fortran 95 отрегулируйте непустые символы строки влево.

2 голосов
/ 12 марта 2014

И действительно не элегантен мой метод (я программирую как пещерная женщина), после написания простого формата записи на Фортране (который не является LJ), я использую комбинацию Excel (csv) и ultraedit для эффективного удаления пробелов получение нужного ЖЖ с последующим запятыми (которые мне нужны для моего конкретного формата импорта в другое программное обеспечение). BF

1 голос
/ 12 ноября 2013

Если вам действительно нужен пробел между выходными полями, а не выровненные по левому краю цифры, чтобы оставить пробел, вы можете просто использовать дескриптор редактирования X.Например,

format(A20,4X,ES18.8,4X,A12,4X,ES18.8)

вставит 4 пробела между каждым полем и следующим.Обратите внимание, что стандарт требует 1X для одного пробела, некоторые текущие компиляторы также принимают нестандартные X.

...