回 帖 发 新 帖 刷新版面

主题:以二进制格式存储并读出二进制复数的问题

写复数到二进制文件代码:
Program main
Implicit None
Open( 12 , File = 'TestBinW.Bin' , Access = 'Direct' , Form = 'Unformatted' , RecL = 4 )
Write( 12 , Rec = 1 ) cmplx(1.23456789D-7,9.87654321D-8)
Close( 12 )
End Program main

从二进制文件中读出复数的代码:
Program main
Implicit None
complex(8) :: rVar1

Open( 12 , File = 'TestBinW.Bin' , Access = 'Direct' , Form = 'Unformatted' , RecL = 4)
Read( 12 , Rec = 1 ) rVar1
Write( * , * ) rVar1
Close( 12 )
pause
End Program main

不知何故,读取后显示的结果不是(1.23456789D-7,9.87654321D-8) ,而是 (5.002596306003016E-59,0.000000000000000E+00) ,烦请各位老师指教!

回复列表 (共11个回复)

11 楼

[quote]楼主最好还是用recl=16喔,因为多数编译器认为16是字节而不是双字个数(只有INTEL编译器默认是认为一个单元是双字吧),而且INTEL编译器也可以通过设置来解决到底最小单元是字节还是双字:)[/quote]
看来是我孤陋寡闻了,以后提问题的时候要加上编译器、平台等信息了,才有助于各位老师给出全面的答案。由于一个帖子给一个专家的的分数上限是50分,所以这个回答只能加20分了,不好意思。

我来回复

您尚未登录,请登录后再回复。点此登录或注册