环境:ubantu LTS14.02编译器:gfortran
代码段截取:[Fortran] 纯文本查看 复制代码
real(kind=8),parameter,dimension(0:8) :: CF2 = (/ 0.8408618802e6 , 0.3637413208e6 ,-0.4634506669e6 , &
& 0.1130306339e6 ,-0.4350217298e3 ,-0.3898988188e4 , & !the second number
do i = 0,8
write(*,e17.10) CF2(i)
end do
输出结果:
.840861875E+006
.363741313E+006
-.463450656E+006
.113030633E+006
-.435021729E+003
-.389898828E+004
.669739929E+003
-.473072624E+002
.126512504E+001
问题描述:
10位有效数字的双精度实数,在write的时候会在第7位有效数字时出错,而双精度有15位的有效数字不应该发生这种错误。
check过gfortran中kind定义,8为双精度值。
疑问:是否是gfortran内存调用实型参数是赋值到了一个单精度的实型内存空间?
如何改变这种情况,使计算时均为双精度实数。
|