Fortran Coder

查看: 11554|回复: 2
打印 上一主题 下一主题

[讨论] 关于数据精度的疑问

[复制链接]

17

帖子

7

主题

0

精华

入门

F 币
78 元
贡献
44 点
跳转到指定楼层
楼主
发表于 2020-3-28 19:53:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做定步长积分计算的时候确定积分步数,我发现显示数组越界的现象Subscript #2 of the array VV has value 50000 which is greater than the upper bound of 49999,检查之后发现是积分步数直接50/0.001=49999导致越界,,但将Ts=50改成40结果就等于40000,请大神指点一下这种问题是怎么引起的?该怎么避免?Program test_IMSL
[Fortran] 纯文本查看 复制代码
implicit none

  real,parameter :: dt=1e-3,Ts=50
  integer,parameter :: nj=floor(Ts/dt)

  write(*,*) nj

pause

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

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2020-3-28 20:50:39 | 只看该作者
floor 改成 nint 就好了

17

帖子

7

主题

0

精华

入门

F 币
78 元
贡献
44 点
板凳
 楼主| 发表于 2020-3-28 20:56:56 | 只看该作者
vvt 发表于 2020-3-28 20:50
floor 改成 nint 就好了

明白了,感谢
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-23 16:34

Powered by Tencent X3.4

© 2013-2024 Tencent

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