我刚刚从Python进入Fortran90,老实说,到目前为止最困难的部分已经习惯了编写输出的格式代码。我遇到了一个格式化问题,我似乎无法谷歌或摆弄我的方式,我搜索了这个网站的答案,但没有找到任何有用的。
我正在进行计算并将输出写入文件。我正在使用以下代码格式化计算结果
写(文件,('13ES11.2)')kappa
有些值非常小,所以我最终得到三位数的负值。所以看起来应该是这样的,
10E-100
但我在输出文件中得到了这个,
10-100
这对我没用,因为我有另一个程序需要读取该文件并理解这些数字是指数。
我很感激任何人的帮助。
答案 0 :(得分:12)
尝试ES11.2E3
的格式规范。这允许指数的三个位置(总是)。
Fortran格式的输入和输出有一种强烈的“固定列宽”的味道。如果没有指数字段宽度规范,则“默认”宽度为2。如果指数部分需要多一个位置,则通常由E占用的列被借用以至少允许输出继续而不丢失信息。如果指数输出需要两个以上的默认值,那么你会看到星星。
请注意,如果您的其他程序是用Fortran编写的,那么它会理解这些奇怪的实数和缺少的E。
编辑描述符(例如G0.3
)为这种奇怪现象提供了部分解决方法,但您无法保证科学格式。