在Fortran的write语句中格式化

时间:2014-10-07 17:51:33

标签: fortran

我尝试在Fortran中使用write语句。但是不生成所需的格式。 当我改变格式

 write(unit=28, fmt='(1X,E15.7,E15.7,E15.7)')

 write(unit=28, fmt='(1X,E15.7,E15.7,I7)') 

它会给我带来价值*******

     0.2375528E-01  0.3807880E-02        *******
     0.1294881E-01  0.7272966E-01        *******
     0.9220393E-02 -0.7748791E-01        *******
     0.3838744E-02 -0.1024217E+00        *******
     0.4709786E-02 -0.2939432E-01        *******

主要代码:

 post = post+1
 write(filename,'(a,i5.5,a)') 'particles', post, '.dat'
 open ( unit=28, file=filename , recl=300 )
 write(unit=28, fmt='(1X,E15.7,E15.7,E15.7)') (xp(i,:), i=1,npart)
 close ( unit=28 )

结果形成代码

     0.2375528E-01  0.3807880E-02        0.1E+01
     0.1294881E-01  0.7272966E-01        0.2E+01
     0.9220393E-02 -0.7748791E-01        0.3E+01
     0.3838744E-02 -0.1024217E+00        0.4E+01
     0.4709786E-02 -0.2939432E-01        0.5E+01

此格式所需的必需结果

     0.2375528E-01  0.3807880E-02        1
     0.1294881E-01  0.7272966E-01        2
     0.9220393E-02 -0.7748791E-01        3
     0.3838744E-02 -0.1024217E+00        4
     0.4709786E-02 -0.2939432E-01        5

有人可以建议我如何获得所需的结果吗?

2 个答案:

答案 0 :(得分:4)

将数字转换为整数

write(unit=28, fmt='(1X,E15.7,E15.7,I7)')  (xp(i,1:2),nint(xp(i,3)), i=1,npart)

答案 1 :(得分:0)

请求零小数

write(unit=28, fmt='(1X,E15.7,E15.7,F15.0)') (xp(i,:), i=1,npart)