Io Fortran将我的输出显示为星号-为什么?

Io Fortran将我的输出显示为星号-为什么?,io,formatting,fortran,Io,Formatting,Fortran,我很难用Fortran对语句进行格式化 在不格式化输出的情况下,我就是这样做的(在循环中,所以这种情况会发生几次): t这是real*8。输出正是我所期望的-增量为0.1,有一些舍入误差: 0.0000000000000000 0.10000000000000001 0.20000000000000001 0.29999999999999999 0.40000000000000002 0.50000000000000000 0.5999

我很难用Fortran对语句进行格式化

在不格式化输出的情况下,我就是这样做的(在循环中,所以这种情况会发生几次):

t
这是
real*8
。输出正是我所期望的-增量为0.1,有一些舍入误差:

0.0000000000000000     
0.10000000000000001     
0.20000000000000001     
0.29999999999999999     
0.40000000000000002     
0.50000000000000000     
0.59999999999999998     
0.69999999999999996     
0.79999999999999993     
0.89999999999999991     
0.99999999999999989
现在,我尝试添加一个format语句:

write(*, '(F1.2)') t*1E9
而且(其他所有内容都相同)我的输出中只有星号:

**
**
(etc...)
我试着读了一下这应该是如何工作的,但我不明白为什么会发生这种情况。我尝试过有更多数字空间的格式(
F15.15
每行只给我更多的星号),我尝试过将format语句移动到它自己的带标签的行。。。我似乎无法得到我想要的输出


我在这里遗漏了什么?

Fortran格式语句的定义如下:

Fw.d
,其中w是要使用的字符总数,d是小数点后的字符数。这里你告诉它你需要一个浮点,总共1个字符宽,小数点后2个字符,这显然是不正确的。例如,要得到一个总共4个字符、小数点后3位的浮点值,您可以这样写:

write(*, '(F4.3)') t*1E9

此外,我应该指出,星号表示该数字不能以所述格式显示

编辑:

在下面添加george的评论:


“对于E格式,字段宽度必须至少比小数多7个,例如E15.8。四个代表指数,两个代表前导0。一个代表可能的“-”。我通常会多加一个空格,这样数字就不会同时出现,E16.8”

谢谢!这就解释了很多=)然而,这并不能完全帮助我-当我应用相同的原则时,尽管对于其他双精度(即
real*8
s),一列的数量级为1e-2-1e-3,另一列的数量级为1e2,但它为这些列提供了中号星号(时间列按预期工作)。目前我的整个格式字符串:
F4.2、E10.8、E10.8
。对于E格式,字段宽度必须至少比小数位数多7,例如E15.8。指数为4,领先0为2。一个表示可能的“-”。我通常会多加一个空格,这样数字就不会同时出现,E16.8..@george我认为这很重要,足以作为答案。这也正是我问题的答案。谢谢编辑:通过以我的格式statment
'(200(f16.8))'
指定最大列数以及读取列的隐含do循环,解决了我的问题。
write(*, '(F4.3)') t*1E9