1. 首页 > 数码

为什么double型数值输出精度成六位?哪里搞错了吗 单精度小数点后几位

为什么double型数值输出精度成六位?哪里搞错了吗单精度小数点后几位

double 输出为什么还是只有6位?

本来嘛默认就是输出六位啊,你需要自己定义,printf("\n最终结果\nc=%.10f\n",c);

定义数据类型为double,双精度,输出时也是double型输出,为什么小数点后位数只有六位啊?求

%f和%lf都是默认输出6位小数,并不代表double类型的精度只有6位小数

如果需要多输出,强制指定就可以了

例如

printf(".12lf\n",a); 就可以输出12位小数了

为什么double类型与float类型在小数点后都保留六位有效数字?

float 为单精度,有效数字为6~7 double 为双精度,有效数字为15~16 但他们在输出时,小数点后都有6位小数。 如: main() { int a=15; float b=123.1234567; double c=12345678.1234567; char d='p'; printf("a=%d,%5d,%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,%8c\n",d,d); printf("e=%11.2",c); } 本例第七行中以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。 第八行中以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,“%8.4lf ”由于指定精度为4位故截去了超过4位的部分。第十行输出字符量d,其中“%8c ”指定输出宽度为8故在输出字符p之前补加7个空格,最后一行输出为12345678.12 这时小数点占一位。 20

记得采纳啊

C++输出double和float为啥都是只有6位小数呢

C中printf的话可以用%lf来实现,但是C++中你用cout输出要设置精度才能输出9位,cout默认精度是6位。设置精度方法cout << setprecision(9) << i.你后面的变量就能以9位精度输出了。