我对数据进行了一下处理,然后想把数据重新写出来。这里面数据有科学计数数据,这一列还有正常的整数,如果是4位就写4位整数,如果大于5位就用科学计数法计数。处理完数据我也想按照这种格式写出来。
50603 4842 11658 1.0563e+005 1963 12 31 0 0 0 0 0 0
50603 4840 11649 5542 1964 1 1 0 0 0 0 0 0
我的代码我把带科学计数这一列用 real*4 :: c(19385),读出来的
[Fortran] 纯文本查看 复制代码 Program Watersave
Implicit None
Character *5 Filename
Integer :: I, K, q
Integer :: a(11,19358),b(19385)
real*4 :: c(19385)
open(10, file = "D:\a\preci.txt")
do i = 1 , 83
read(10, *) filename
open(11, file = "D:\a\"//filename//".txt")
do k = 1,19358
read(11, *) a(1:3,k),c(k),a(4:8,k),b(k),a(9:11,k)
end do
open(12,file = "D:\c\"//filename//".txt")
do q = 1, 19358
if (30000<b(q) .and. b(q)<32700) then
b(q) = mod(b(q),1000)
elseif (b(q) == 32700) then
b(q) = 0
else
b(q) = b(q)
end if
write(12,"(3i6,e18.10,5i8,i6,3i3)") a(1:3,q),c(k),a(4:8,k),b(q),a(9:11,q)
end do
close(12)
close(11)
end do
end
如果这13列都是整数的话,写 write(12,"(13i6)")都可以正常写出来。但是这个文件写出来
50603 4842 11658 0.0000000000E+00 0 0 0**************** 1 0 0 0
50603 4842 11658 0.0000000000E+00 0 0 0**************** 0 0 0 0
50603 4842 11658 0.0000000000E+00 0 0 0**************** 0 0 0 0
所以想请问一下,这个科学计数的文件该如何处理写出来吗?
|