对于三位数的指数,Fortran放弃了E' E'在输出中

时间:2014-06-02 23:20:06

标签: file format output fortran90 exponential

我刚刚从Python进入Fortran90,老实说,到目前为止最困难的部分已经习惯了编写输出的格式代码。我遇到了一个格式化问题,我似乎无法谷歌或摆弄我的方式,我搜索了这个网站的答案,但没有找到任何有用的。

我正在进行计算并将输出写入文件。我正在使用以下代码格式化计算结果

  

写(文件,('13ES11.2)')kappa

有些值非常小,所以我最终得到三位数的负值。所以看起来应该是这样的,

  

10E-100

但我在输出文件中得到了这个,

  

10-100

这对我没用,因为我有另一个程序需要读取该文件并理解这些数字是指数。

我很感激任何人的帮助。

1 个答案:

答案 0 :(得分:12)

尝试ES11.2E3的格式规范。这允许指数的三个位置(总是)。

Fortran格式的输入和输出有一种强烈的“固定列宽”的味道。如果没有指数字段宽度规范,则“默认”宽度为2。如果指数部分需要多一个位置,则通常由E占用的列被借用以至少允许输出继续而不丢失信息。如果指数输出需要两个以上的默认值,那么你会看到星星。

请注意,如果您的其他程序是用Fortran编写的,那么它会理解这些奇怪的实数和缺少的E。

编辑描述符(例如G0.3)为这种奇怪现象提供了部分解决方法,但您无法保证科学格式。