郁闷死的问题~~~~~~~~~~~~~~~~~

来源:百度知道 编辑:UC知道 时间:2024/05/28 01:02:56
被%f搞糊涂拉。。。。。。。。。。。。。。。。。。。。
float d1 = 12345.123;

printf("%lf\n", d1);
printf("%13f\n", d1);

输出结果如下

12345.123047
空格12345.123047

printf("%lf\n", d1); %lf不是输入double类型的啊 double不是小数精确到15位啊 为什么会精确到6位数 ---> 12345.123047

printf("%13f\n", d1); %13f到底是什么意思啊?我看很多人说拉很多不同的回答 我晕拉....

我看拉输出 这么理解拉 float精确到6位数
所以12345.123输出就是--> 12345.123047 047随即产生
%13f 就是输出13位(这个13位到底包括小数点啊?)

12345.123047 一共有12位(包括小数点) 所以不足13位 前面会有个空格

float到底精确到7位还有6位啊?为什么 我在baidu上搜问题的时候
有的人说是精确到6位 有的说是精确到7位啊?

希望各位大侠能完整回答上面问题 我是菜鸟

希望能有大侠发下QQ 我好有问题时候请教请教

1.事实上,%lf和%f是等价的。

2.关于精度问题,C语言本身对此并没有做统一的规定,而是由机器特性决定的

3.关于%13f的问题,13表示输出的列宽,如果实际的长度没有这么大,则在左端填充空格,如果实际宽度超出此值,则以实际情况输出。

c语言后面会自己补充一位/0的
%13f 自然是取13位浮点数.

就是输出数值总长度为l,整数个数加小数个数,不足补空,右顶格起

double是可以计算到小数点后15位,不是精确到。

按照机器性的
意思就是 不同的电脑的精度不同