小数点后几位及几位有效数字的区别

2023年8月4日 | 分类: 【编程】

【概念】

C语言中常用的小数有两种类型,分别是 float 或 double;float 称为单精度浮点型,double 称为双精度浮点型。不像整数,小数没有那么多幺蛾子,小数的长度是固定的,float 始终占用4个字节,double 始终占用8个字节。

c语言double类型默认输出几位小数?

C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数(不足六位以 0 补齐,超过六位按四舍五入截断)。double a = 1;

printf("%lf\n", a);

输出会是:1.000000

但是有时六位会显得很长,没必要。比如计算平均分,一到两位小数就足够了。可是有时六位又不够,需要更多位小数,比如计算高精度平方根。这时可以用printf的格式控制。如果要输出n位小数,那么可以用%.nlf的格式。其中n为数字。

如要输出10位小数,那么:

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

小数也可以使用 printf 函数输出,包括十进制形式和指数形式,它们对应的格式控制符分别是:%f 以十进制形式输出 float 类型;

%lf 以十进制形式输出 double 类型;

%e 以指数形式输出 float 类型,输出结果中的 e 小写;

%E 以指数形式输出 float 类型,输出结果中的 E 大写;

%le 以指数形式输出 double 类型,输出结果中的 e 小写;

%lE 以指数形式输出 double 类型,输出结果中的 E 大写。

【区别】

两位小数输出:

#include <iomanip>
double res = 3.1415926;
cout << fixed << setprecision(2) << res << endl;

输出结果为3.14

保留2个有效数字输出:

#include <iomanip>
double res = 3.1415926;
cout << setprecision(2) << res << endl;

输出结果为3.1,注意结果会四舍五入。

【参考】

参考:https://www.zhihu.com/question/304453705
参考:https://blog.csdn.net/weixin_30068377/article/details/117101750
参考:http://www.cnblogs.com/stacktrace/p/5142470.html