long double a[360][180][38][19];
fscanf__s(fp,"lf"&a[0][0][0][0]);_
printf("a[%d][%d][%d][%d] = %31.30f\n",i,j,k,p,a[i][j][k][p]);
源数据:1.1111111111111111111111111111111
输出结果:1.11111111111111111111000000000
这是个什么情况?
long double a[360][180][38][19];
fscanf__s(fp,"lf"&a[0][0][0][0]);_
printf("a[%d][%d][%d][%d] = %31.30f\n",i,j,k,p,a[i][j][k][p]);
源数据:1.1111111111111111111111111111111
输出结果:1.11111111111111111111000000000
这是个什么情况?
double64位中,1位符号位,11位指数位,52位尾数位。
double尾数占52位,2^-52=2.2204460492503130808472633361816e-16,即2^-16,所以能够保证所有的15位精度。