为什么double a=3.1415926,printf(“%08.21f##\n”,a),结果是3.141592600000000070000000000000000000000## ?

为什么double a=3.1415926,printf(“%08.21f##\n”,a),结果是3.141592600000000070000000000000000000000## ?小数点后不是该输出21位吗

printf(“%.21f##\n”,a)
这样试试

double a=3.1415926;有效是7位
可以用 printf("%.21f##\n",a);
输出是:3.141592600000000068405##

输出是小数点21位

img