24小时热门版块排行榜    

CyRhmU.jpeg
查看: 564  |  回复: 1

wang_2008

木虫 (初入文坛)

[求助] fortran读取文件已有1人参与

我写了一个利用fortran程序读取文件数据的程序,发现数据的实数小数点后的数据总是不对呢?请大家帮忙看看啊,先谢谢了!

程序如下:

PROGRAM t1
IMPLICIT NONE  

INTEGER :: number_nodes
REAL, DIMENSION(6) :: info_nodes

INTEGER :: ierror
INTEGER :: i,j

! open the file
OPEN (UNIT=8, FILE = 'nodes1.dat', STATUS='OLD', ACTION = 'READ', IOSTAT=ierror)
! read  integers
READ (8,*) number_nodes

! read nodes
DO i = 1,number_nodes
   READ(8,*) info_nodes(i)
END DO

WRITE(*,*) 'number of nodes is', number_nodes

DO i = 1,number_nodes
   WRITE(*,*) 'node ', i , 'is ', info_nodes(i)
END DO

CLOSE(UNIT=8)
END PROGRAM t1

其中文件 nodes1.dat的格式为:
6
0.0
0.2
0.4
0.6
0.8
1.0
利用ubuntu下的gfortran编译,得到的结果为:

number of nodes is           6
node            1 is    0.00000000   
node            2 is   0.200000003   
node            3 is   0.400000006   
node            4 is   0.600000024   
node            5 is   0.800000012   
node            6 is    1.00000000   

其中node2---nodes5后面为什么总有些莫名奇妙小数呢?

刚学fortran不就,请大家不吝赐教.
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fmying

银虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
wang_2008: 金币+5, ★★★很有帮助 2015-12-31 15:22:30
这个是浮点数读入产生的误差。
如果想消除误差,可以试试:
6
0.0e0
0.2e0
0.4e0
0.6e0
0.8e0
1.0e0

发自小木虫Android客户端
上善若水
2楼2015-12-30 23:34:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wang_2008 的主题更新
信息提示
请填处理意见