我对此非常困惑.我转出一个大小为16000*4*2的3D数组,其中所有元素都是DOUBLE PRECISION,我认为我应该得到一个大小为16000*4*2*8字节/ dp = 1,024,000字节的文件.但我一直得到2,048,000字节.
我测试了一个简单的测试程序:
PROGRAM testprog
IMPLICIT NONE
DOUBLE PRECISION :: x=0.0D0
INTEGER :: i
OPEN(UNIT=128,FILE='try.out',FORM='UNFORMATTED',ACCESS='SEQUENTIAL')
DO i=1,16000*4*2
WRITE(128) x
ENDDO
CLOSE(128)
ENDPROGRAM testprog
Run Code Online (Sandbox Code Playgroud)
并使用以下命令运行它:
gfortran f.f90 -o a
./a
ls -als try.out
Run Code Online (Sandbox Code Playgroud)
而我得到的是
2000 -rw-r--r-- 1 jipuwang umstudents 2048000 Dec 17 20:16 try.out
Run Code Online (Sandbox Code Playgroud)
我无法理解它.一个双精度使用2个字节对吗?
我做了别的事,如果有人也能帮我理解这个:
PROGRAM testprog
IMPLICIT NONE
DOUBLE PRECISION :: x=0.0D0
INTEGER :: i
OPEN(UNIT=128,FILE='try.out')
DO i=1,2
WRITE(128,*) x
ENDDO
CLOSE(128)
ENDPROGRAM testprog
Run Code Online (Sandbox Code Playgroud)
它给了我一个大小为54字节的文件.