我尝试在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
有人可以建议我如何获得所需的结果吗?
答案 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)