将(双精度)变量获得的值作为Fortran程序的一部分写入屏幕。在write
语句之后,程序继续不间断。
但是,当我在写入后立即添加stop
语句时,我得到该变量的不同(屏幕打印)值。值的变化从第6位开始。
代码包括:
enertot=energy0(x,y,z,size) !energy0 is a function
write (*,*) 'The initial energy is', enertot
这会在屏幕上为enertot
输出一些(合理的)值,程序会继续。
现在添加stop
:
enertot=energy0(x,y,z,size) !energy0 is a function
write (*,*) 'The initial energy is', enertot
stop
这为enertot
提供了不同的值。
无论我使用哪种编译器(f90 / 95编译器),都会出现同样的问题。它可能与机器很老,在过时的Linux Fedora OS上运行吗?
甚至更奇怪 - 当我使用Silverfrost编译器在我的Windows笔记本电脑上运行完全相同的程序时,我得到了enertot
的第三个结果,与之前从第5个有效数字开始的结果不同。但是,在这种情况下,添加stop
根本不会改变打印值。
有什么想法吗?