Для трехзначных показателей Fortran опускает букву «E» в выводе.

Я только перешел на Fortran90 из Python, и, честно говоря, самое сложное до сих пор было привыкнуть к кодам форматирования для записи вывода. Я столкнулся с проблемой форматирования, которую я не могу найти в Google или найти выход, я искал ответ на этом сайте, но не нашел ничего полезного.

Я делаю расчет и записываю результат в файл. Я форматирую результаты расчета следующим кодом

записать (файл, ('13ES11.2)') каппа

Некоторые значения очень малы, поэтому я получаю трехзначные отрицательные значения. Итак, что-то, что должно выглядеть так,

10e-100

Но вместо этого я получаю это в своем выходном файле,

10-100

Что не помогает мне, потому что у меня есть другая программа, которая должна прочитать этот файл и понять, что эти числа являются показателями.

Буду признателен за любую помощь в этом.


person Dex    schedule 02.06.2014    source источник


Ответы (1)


Попробуйте спецификацию формата ES11.2E3. Это позволяет три позиции (всегда) для экспоненты.

Существует сильный аромат «фиксированной ширины столбца» для ввода и вывода в формате Fortran. Без спецификации ширины поля экспоненты ширина «по умолчанию» равна двум. Если для экспоненциальной части требуется еще одна позиция, то столбец, обычно занимаемый буквой E, заимствуется, чтобы, по крайней мере, обеспечить продолжение вывода без потери информации. Если для вывода экспоненты требуется на два больше, чем по умолчанию, вы увидите звездочки.

Обратите внимание, что если бы другая ваша программа была написана на Фортране, то она бы понимала эти странные действительные числа с отсутствующей буквой E.

Дескриптор редактирования, такой как G0.3, обеспечивает частичное решение этой странности, но вы не гарантируете научный формат.

person IanH    schedule 03.06.2014
comment
@IanH можно ли сделать наоборот, подавить показатель степени. Скажите вместо 1.123456E-05 получите 1.123456-05. В принципе, Фортран без проблем читает регистр без E, поэтому я предполагаю, что какой-нибудь умный дескриптор формата тоже может его написать. - person Alexander Cska; 11.11.2016