主题:如何用read读取格式不一样的小数
luming1377
[专家分:0] 发布于 2012-04-23 11:36:00
请问如何用read命令在文件中读取格式不太一样的数据,比如14500,1400,1500.1,14500.23这几个数据,类型为real
我发现如果用F9.1读取1400时候会读成140,有人知道怎么做吗?
回复列表 (共6个回复)
沙发
alsoran [专家分:760] 发布于 2012-04-23 15:50:00
直接用read(xx,*) value 试过没
板凳
luming1377 [专家分:0] 发布于 2012-04-23 21:17:00
试过,不行,如果是整数的话,有可能读出的值小几个零。
3 楼
luming1377 [专家分:0] 发布于 2012-04-23 21:17:00
试过。
4 楼
yeg001 [专家分:14390] 发布于 2012-04-23 23:42:00
是量级少了(可能是两个量级). 原因是fortran很旧很旧的标准. 如果是整数, 但按照浮点数读取认为后几位是小数点后的数值.
为了兼容性, 现在的编译器不得不继承这个不合理的设定. 所以浮点数一定要带小数点.
5 楼
fpchi9103 [专家分:260] 发布于 2012-04-24 06:49:00
为什么非得用有格式的读取,直接用read(*,*)不好么?
6 楼
yeg001 [专家分:14390] 发布于 2012-04-24 11:37:00
read(*,*) 那要看用什么变量来接收了. 整数变量接收肯定没错,浮点数变量来接收就不确定了.
这个问题我很久以前也碰到过, 当时我认为ivf有bug. 后来在一本权威的数上看到了那个旧标准的解释.
尝试找了一下我的资料所在的页数, 由于至少是一年前看的了, 没有找到. 可能是在 <The_Fortran_2003_Handbook> 或者<Fortran 95 2003 explained> 上看到的.
我来回复