主题:Fortran编程时,出现比如4.38264E-06是怎么回事
why80038003
[专家分:0] 发布于 2010-04-08 11:01:00
调试时发现有的变量出现诸如4.38264E-06之类的数值,这是怎么回事
回复列表 (共7个回复)
沙发
asymptotic [专家分:16630] 发布于 2010-04-08 12:01:00
我没有完全理解你的意思,这样的数字在 Fortran 中不是很常见吗?
但是,我猜测,您认为变量的值应该是 零,因为你没有对其进行初始化操作(赋值),所以,它可能显示的是所用内存的(垃圾)信息。
板凳
why80038003 [专家分:0] 发布于 2010-04-08 20:14:00
[quote]我没有完全理解你的意思,这样的数字在 Fortran 中不是很常见吗?
但是,我猜测,您认为变量的值应该是 零,因为你没有对其进行初始化操作(赋值),所以,它可能显示的是所用内存的(垃圾)信息。[/quote]
我把一个数组的初值都赋成了0,但在后面做循环时,在中间,也就是循环做到一半的时候,我检查了一下这个数组里边的数值,有几个元素出现了4.38452E-06之类的字眼儿,不过也有是0的元素,这点我很是不懂
3 楼
asymptotic [专家分:16630] 发布于 2010-04-08 21:44:00
这个只能具体看代码了。
4 楼
anney169 [专家分:130] 发布于 2010-04-12 21:47:00
很可能在循环过程中,某些值被update了。
6 楼
zql1009 [专家分:30] 发布于 2010-04-18 23:03:00
计算机舍入误差。
建议使用新的定义格式,采用双精度定义。在数的后面加d0
real::a=3.0d0e-5
则出现的结果没有舍入误差。自己去实验吧
7 楼
asymptotic [专家分:16630] 发布于 2010-04-18 23:41:00
[quote]计算机舍入误差。
建议使用新的定义格式,采用双精度定义。在数的后面加d0
real::a=3.0d0e-5
则出现的结果没有舍入误差。自己去实验吧[/quote]
改正您的例子
real::a=3.0d-5
但您这个例子加上 D 有用吗?我看您亦需要好好看看浮点数相关知识了。
我来回复