Формат Фортрана - проблема с числами <1e-100 - PullRequest
0 голосов
/ 27 сентября 2018

У меня возникает проблема, когда некоторые числа становятся маленькими в моей программе, потому что я записываю их в файл, и экспоненциальный формат становится другим: например, числа> 1e-100: 0.3979111076224349D-98 меньшие числа: 0.2306878464709676-101 (буква D исчезает)

И так как она читается другой программой, эти цифры не читаются должным образом.

В настоящее время я использую формат 3D25.16. Возможное решение - принудительное3E25.15E3 Проблема заключается в том, что я теряю 1 цифру для любого числа

Я хочу не потерять цифру и не потерять производительность при тестировании перед печатью.

Есть ли еще какие-либорешение?Идеальным решением для меня был бы формат, который печатает экспоненту с двумя цифрами на экспоненте и изменяет на 3 цифры, когда <1e-100. Другим хорошим решением будет вариант формата, который преобразует очень маленькие числа в ноль </p>

Другие сомненияесть: при переходе с 3D25.16 на 3E25.15E3 я теряю точность, изменяя D на E?Потому что 3D25.15E3 не принимается

Спасибо

1 Ответ

0 голосов
/ 01 октября 2018

Как все сказали в комментариях (а также и вы в вопросе), вы можете просто использовать дескриптор E вместо D, так что вам разрешено указывать количество цифр для экспонентной части.

В настоящее время я использую формат 3D25.16. Возможным решением будет форсирование 3E25.15E3. Проблема в том, что я теряю 1 цифру для любого числа

Ну, почему бы не простоувеличить ширину вывода с помощью 3E26.15E3?

Другие сомнения: при переходе с 3D25.16 на 3E25.15E3 я теряю точность, изменяя D на E?

С 3E25.15E3: да, возможно (1 цифра).С 3E26.15E3: нет, не надо.

...