Fortran Coder

查看: 3510|回复: 6
打印 上一主题 下一主题

[输入输出] 想从TXT读40位的整数,读不出来

[复制链接]

16

帖子

6

主题

0

精华

入门

F 币
100 元
贡献
49 点
跳转到指定楼层
楼主
发表于 2022-9-28 20:50:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
想TXT读40位的整数,读不出来。试了很多遍,发现代码30行取I15时能读出来,读15位后就报错了,怎么解决?
[Fortran] 纯文本查看 复制代码
01program test
02  implicit none
03   
04  integer                           :: Npop,tmin
05  INTEGER(KIND=2)                   ::Run_time
06  integer( kind = 8 )               :: Gene
07   
08   
09  CALL Get_Best (8,10,1,Gene)
10  write(*,*)'Gene:',Gene
11   
12  end program test
13   
14    !     ******************** Get_Best *****************
15  subroutine Get_Best (tmin,Npop,Run_time,Gene)
16  implicit none
17  integer,intent(in)                          :: tmin,Npop
18  integer                                     :: Run_time
19  integer(KIND=8)                             :: Gene
20  integer(KIND=8),dimension(Npop)             :: GeneZ
21  integer                                     :: i,l
22  CHARACTER(LEN = 2)                                      :: cRun_time
23  character(LEN=100)                          :: Nome,annotation
24  CHARACTER(*), PARAMETER                     :: fileplace = "D:/simulation/"
25   
26  write(cRun_time,'(I2)') Run_time
27  Nome = TRIM(ADJUSTL(cRun_time))//'namlist_in.txt'
28  OPEN(1,file = fileplace//Nome,status='old',FORM='FORMATTED')
29  read(1,'(A)') annotation
30  read(1,'(6X,I40)') (GeneZ(i),i=1,Npop)
31  close(1)
32  write(*,*)'GeneZ:',GeneZ
33  Gene=GeneZ(tmin)
34  end subroutine Get_Best

报错.png (124.91 KB, 下载次数: 272)

报错.png

1namlist_in.txt

488 Bytes, 下载次数: 2

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

174

帖子

2

主题

1

精华

大师

Vim

F 币
1061 元
贡献
497 点

规矩勋章

沙发
发表于 2022-9-28 21:00:53 | 只看该作者
无法解决,integer(8)最大是9223372036854775807,总共19位,没法读取这么大的数。

838

帖子

2

主题

0

精华

大宗师

F 币
3937 元
贡献
2339 点
板凳
发表于 2022-9-28 21:36:12 | 只看该作者
首先从需求分析,你是否需要这么多位?
fortran做不到,可否用变通的方法,比如用多个数来存储,或者用字符串。

2038

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1676 元
贡献
715 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2022-9-29 08:48:28 | 只看该作者
有些看起来像数字的东西,如果不会参与计算的话,就用字符串来存储和读写吧。

比如身份证号码,你几乎不需要对他做计算。

16

帖子

6

主题

0

精华

入门

F 币
100 元
贡献
49 点
5#
 楼主| 发表于 2022-9-29 09:39:06 | 只看该作者
Transpose 发表于 2022-9-28 21:00
无法解决,integer(8)最大是9223372036854775807,总共19位,没法读取这么大的数。

好的,谢谢

16

帖子

6

主题

0

精华

入门

F 币
100 元
贡献
49 点
6#
 楼主| 发表于 2022-9-29 09:39:38 | 只看该作者
fcode 发表于 2022-9-29 08:48
有些看起来像数字的东西,如果不会参与计算的话,就用字符串来存储和读写吧。

比如身份证号码,你几乎不需 ...

谢谢建议

16

帖子

6

主题

0

精华

入门

F 币
100 元
贡献
49 点
7#
 楼主| 发表于 2022-9-29 09:40:12 | 只看该作者
li913 发表于 2022-9-28 21:36
首先从需求分析,你是否需要这么多位?
fortran做不到,可否用变通的方法,比如用多个数来存储,或者用字符 ...

谢谢建议
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2025-4-30 11:02

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

快速回复 返回顶部 返回列表