gfortran中双精度输入输出有误差,求解答
环境:ubantu LTS14.02编译器:gfortran代码段截取:
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内存调用实型参数是赋值到了一个单精度的实型内存空间?
如何改变这种情况,使计算时均为双精度实数。
0.8408618802e6, 0.3637413208e6,-0.4634506669e6, &
&0.1130306339e6,-0.4350217298e3,-0.3898988188e4
改为
0.8408618802d6, 0.3637413208d6,-0.4634506669d6, &
&0.1130306339d6,-0.4350217298d3,-0.3898988188d4 楚香饭 发表于 2015-8-19 15:46
0.8408618802e6, 0.3637413208e6,-0.4634506669e6, &
...
3q,已解决。
看fortran95/2003,以为现在的语法把d这个废止了,直接使用e就可以
页:
[1]