C语言 运行结果中为什么双精度实型只输出小数点后六位 关于C语言中双精度实型double表示和15位精度的问题

C\u8bed\u8a00\u8fd0\u7b97\u7b26\u201c/\u201d\u7684\u95ee\u9898 \u4e66\u4e0a\u8bf4\u8fd0\u7b97\u91cf\u4e2d\u6709\u4e00\u4e2a\u662f\u5b9e\u578b\uff0c\u5219\u7ed3\u679c\u4e3a\u53cc\u7cbe\u5ea6\u5b9e\u578b \u4f46\u6211\u5b9e\u8df5\u4e86\u4e00\u4e0b\uff08\u53d8\u91cfc

\u8fd9\u53e5\u8bdd\u6ca1\u9519\uff0c\u4f46\u4f60\u5b9a\u4e49\u548c\u8f93\u51fa\u90fd\u662f\u5355\u7cbe\u5ea6\u7c7b\u578b\u7684
float c;//\u8fd9\u4e2a\u662f\u5355\u7cbe\u5ea6\u7c7b\u578b
c=b/a; //b/a\u7684\u7ed3\u679c\u662f\u53cc\u7cbe\u5ea6\u7c7b\u578b\uff08\u5373double\uff09\u7684\u4f46\u4f60\u8d4b\u503c\u7ed9c\uff0c\u6240\u4ee5\u81ea\u52a8\u8f6c\u4e3a\u4e86\u5355\u7cbe\u5ea6\u7c7b\u578b
printf("c=%f",c);
\u66f4\u4f55\u51b5%f\u662f\u4ee5float\u8f93\u51fa

\u5b9a\u4e49\u53cc\u7cbe\u5ea6\u7c7b\u578b\u662fdouble c
\u53cc\u7cbe\u5ea6\u8f93\u51fa\u662f\u7528%lf


\u697c\u4e3b\u770b\u56fe\uff0c\u8bf7\u65e0\u89c6\u4e0a\u9762\u7684fun\u51fd\u6570\u3002

在C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数。

比如这样的代码:

double a = 1;
printf("%lf
", a);

输出会是

1.000000

但是有时六位会显得很长,没必要。比如计算平均分,一到两位小数就足够了。

可是有时六位又不够,需要更多位小数,比如计算高精度平方根。

这时可以用printf的格式控制。

如果要输出n位小数,那么可以用%.nlf的格式。其中n为数字。

如要输出10位小数,那么

printf("%.10lf
", a);

即可


类似的输出1位小数

printf("%.1lf
", a);



printf("%lf",p);
是一般输出形式默认是 6位吧
你 试试
printf("%.10f",p);
也许就 可以了

只输出六位小数,这是默认的,可以改变,如:printf("%6",d)

楼上的回答是对的,printf要求你输出格式,默认6位小数,你可以指定输出几位

你可以自己设置输出精度的
printf("%.nf",p); n为你的精度
如:printf("%.6f",p); //输出为小数点后6位

扩展阅读:双竖线 ... 精字的化学语言 ... 处理器c-状态 ... c#主要做什么 ... c#是什么 ... c# async ... 精神分裂症模仿语言 ... cpu c states开启还是关闭 ... c语言两个for循环如何执行 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网