%.2f和%0.2一样?

时间:2022-12-28 14:01:39
#include<stdio.h>
int main(void)
{
float a=+3.13;
printf("%.2f\n",a);
printf("%0.2f\n",a);
return 0;
}


输出结果是一样的,难道%.2f和%0.2一样?0表示不限制么?

23 个解决方案

#1


应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好

#2


引用 1 楼 johnxme126 的回复:
应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好


float a=+3.13;没初始化,不好。
小弟不明白这句话

#3


%.2f 和 %0.2f 是一样的,但 %02d 和 %2d 确是不一样的,可以小心哟

#4


引用 2 楼 zdnexus 的回复:
引用 1 楼 johnxme126 的回复:

应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好


float a=+3.13;没初始化,不好。
小弟不明白这句话


的确不存在初始化的问题。
如果你想让a等于3.13,那么float a=+3.13;前面那个加号不需要,当然要也没错。不过最好写成:
float a = 3.13f;
因为缺省地,带浮点的小数,在C/C++中,都被认为是double的。在Java中也是这样。

#5


引用 2 楼 zdnexus 的回复:
引用 1 楼 johnxme126 的回复:

应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好


float a=+3.13;没初始化,不好。
小弟不明白这句话


我也不明白这句话
不过, 如果 float a = +3.234567 是不是会更好

#6


%.2f 和 %0.2f 是一样的

#7


%.2f 和 %0.2f哪个更好?

#8


顶一下。。

#9


%g好(^_^)

#10


该回复于2011-03-15 08:54:07被版主删除

#11


习惯用%g,%f不怎么好用

#12


%x.2f小数点前的x是表示最小字段宽度,即实际宽度>=x。

#13


是一样的

#14


没两样

#15


小数点前面的0可以省略。是一样的。

#16


#include<stdio.h>
int main(void)
{
float a=+3.13;
printf("%.2f\n",a);
printf("%0.2f\n",a);
return 0;
}
在以上程序中,%0.2f是表示格式控制输出,意义为输出为0列但是你所规定的精度怎么可以用0列输出呢,C语言规定当所规定的列数小于所要显示的精度时候就要按原数据输出;你可以把0改为其他的数值比如更大的9试一试看显示出来的是什么效果;

#17


#include<stdio.h>
int main(void)
{
float a=+3.13;
printf("%.2f\n",a);
printf("%0.2f\n",a);
return 0;
}
在以上程序中,%0.2f是表示格式控制输出,意义为输出为0列但是你所规定的精度怎么可以用0列输出呢,C语言规定当所规定的列数小于所要显示的精度时候就要按原数据输出;你可以把0改为其他的数值比如更大的9试一试看显示出来的是什么效果;

#18


他看错了以为是 float a+=3.13;你这样写就容易误导人人以为是没有初始化。这两种写法一样,0.5d%的话有个用处,就是对整形的数进行高位补0的操作
引用 2 楼 zdnexus 的回复:
引用 1 楼 johnxme126 的回复:

应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好


float a=+3.13;没初始化,不好。
小弟不明白这句话

#19


引用 2 楼 zdnexus 的回复:
引用 1 楼 johnxme126 的回复:

应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好


float a=+3.13;没初始化,不好。
小弟不明白这句话


float a=+3.13;没初始化,不好。
是不是看成 float a+=3.13 了? 是float a+=3.13的话,确实是没有初始化a就是用了。

#20


%g是什么意思呢?

#21


该回复于2011-03-16 10:46:33被版主删除

#22


其实是不一样的,点前面的是字符宽度限制,点后面的是小数部分长度限制

字符宽度限制如果字符的实际宽度大于限制大小,则以实际为准,否则按照宽度限制补充空格凑足宽度

因为字符至少是也有1个,所以0没有起到作用,但是其实质是不一样的。

#23


该回复于2011-03-17 14:18:35被版主删除

#1


应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好

#2


引用 1 楼 johnxme126 的回复:
应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好


float a=+3.13;没初始化,不好。
小弟不明白这句话

#3


%.2f 和 %0.2f 是一样的,但 %02d 和 %2d 确是不一样的,可以小心哟

#4


引用 2 楼 zdnexus 的回复:
引用 1 楼 johnxme126 的回复:

应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好


float a=+3.13;没初始化,不好。
小弟不明白这句话


的确不存在初始化的问题。
如果你想让a等于3.13,那么float a=+3.13;前面那个加号不需要,当然要也没错。不过最好写成:
float a = 3.13f;
因为缺省地,带浮点的小数,在C/C++中,都被认为是double的。在Java中也是这样。

#5


引用 2 楼 zdnexus 的回复:
引用 1 楼 johnxme126 的回复:

应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好


float a=+3.13;没初始化,不好。
小弟不明白这句话


我也不明白这句话
不过, 如果 float a = +3.234567 是不是会更好

#6


%.2f 和 %0.2f 是一样的

#7


%.2f 和 %0.2f哪个更好?

#8


顶一下。。

#9


%g好(^_^)

#10


该回复于2011-03-15 08:54:07被版主删除

#11


习惯用%g,%f不怎么好用

#12


%x.2f小数点前的x是表示最小字段宽度,即实际宽度>=x。

#13


是一样的

#14


没两样

#15


小数点前面的0可以省略。是一样的。

#16


#include<stdio.h>
int main(void)
{
float a=+3.13;
printf("%.2f\n",a);
printf("%0.2f\n",a);
return 0;
}
在以上程序中,%0.2f是表示格式控制输出,意义为输出为0列但是你所规定的精度怎么可以用0列输出呢,C语言规定当所规定的列数小于所要显示的精度时候就要按原数据输出;你可以把0改为其他的数值比如更大的9试一试看显示出来的是什么效果;

#17


#include<stdio.h>
int main(void)
{
float a=+3.13;
printf("%.2f\n",a);
printf("%0.2f\n",a);
return 0;
}
在以上程序中,%0.2f是表示格式控制输出,意义为输出为0列但是你所规定的精度怎么可以用0列输出呢,C语言规定当所规定的列数小于所要显示的精度时候就要按原数据输出;你可以把0改为其他的数值比如更大的9试一试看显示出来的是什么效果;

#18


他看错了以为是 float a+=3.13;你这样写就容易误导人人以为是没有初始化。这两种写法一样,0.5d%的话有个用处,就是对整形的数进行高位补0的操作
引用 2 楼 zdnexus 的回复:
引用 1 楼 johnxme126 的回复:

应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好


float a=+3.13;没初始化,不好。
小弟不明白这句话

#19


引用 2 楼 zdnexus 的回复:
引用 1 楼 johnxme126 的回复:

应该是一样的,都是限制输出到小数点后两位
float a=+3.13;没初始化,不好


float a=+3.13;没初始化,不好。
小弟不明白这句话


float a=+3.13;没初始化,不好。
是不是看成 float a+=3.13 了? 是float a+=3.13的话,确实是没有初始化a就是用了。

#20


%g是什么意思呢?

#21


该回复于2011-03-16 10:46:33被版主删除

#22


其实是不一样的,点前面的是字符宽度限制,点后面的是小数部分长度限制

字符宽度限制如果字符的实际宽度大于限制大小,则以实际为准,否则按照宽度限制补充空格凑足宽度

因为字符至少是也有1个,所以0没有起到作用,但是其实质是不一样的。

#23


该回复于2011-03-17 14:18:35被版主删除