【问题标题】:For three digit exponents Fortran drops the 'E' in the output对于三位指数,Fortran 在输出中删除“E”
【发布时间】:2014-07-23 04:16:50
【问题描述】:

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

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

写(文件,('13ES11.2)')卡帕

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

10e-100

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

10-100

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

感谢任何人对此的帮助。

【问题讨论】:

    标签: file format output fortran90 exponential


    【解决方案1】:

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

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

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

    G0.3 之类的编辑描述符提供了部分解决此奇怪问题的方法,但不能保证科学格式。

    【讨论】:

    • @IanH 是否可以做相反的事情,抑制指数。说而不是1.123456E-05 得到1.123456-05。原则上,Fortran 读取没有E 的case 没有问题,所以我推测一些聪明的格式描述符也可以写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 2015-09-28
    相关资源
    最近更新 更多