为什么c语言编程float算出来有很多0

为什么c语言编程float 程序运算后,算出来答案小数点后有很多0。
如:2.450000
我想要:2.45
怎么把0去掉?

这不是“算出来”的问题,是输出函数printf的控制符用得不合适:%f的作用是按浮点型输出,默认保留6位小数,不足6位的后面用0补齐。想要不输出小数点后多余的0,用%g控制就可以了,它是所谓紧凑型输出,默认有效数字7位(连小数点)左对齐,在此范围内,小数点的实际有效位是多少就输出多少。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    float a=123.456789111f,b=4.5020000f;
    printf("通常输出:%f %f\n",a,b);
    printf("紧凑输出:%g %g\n",a,b);
    return 0;
}

输出如下图:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-06-05
float表示是浮点数,输出时应该有7位小数。要去掉应该用输出控制符。
格式字符串(格式)
[标志][输出最少宽度][.精度][长度]类型
"%-md" :左对齐,若m比实际少时,按实际输出。
"%m.ns":输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
e.g. "%7.2s" 输入CHINA
  输出" CH"
"%m.nf":输出浮点数,m为宽度,n为小数点右边数位
e.g. "%3.1f" 输入3852.99
输出3853.0
长度:为h短整形量,l为长整形量本回答被网友采纳
第2个回答  2011-07-12
很多0的话你应该输出格式写的是 %f
如果要把多余的0去掉的话换成 %g就可以了。
如果要精确到小数点后k位的话 换成 %.kf 就可以了。 比如 %.2f %.3f 分别是精确到小数点后两位三位。
第3个回答  推荐于2017-09-15
浮点型有效位数是六位,你打印的时候就会精确到小数点后的6位,要用%.2f 格式控制输出,
%.2f 就表示保留2位小数,%.3f 就表示保留3位小数 你试一下。本回答被提问者采纳
第4个回答  2011-07-13
因为这里的sum1被你定义成整形了 aver1=sum1/3,右边是整形 左边是浮点型 所以不行
你可以把sum1定义为float 也可以将aver1=(float)sum1/3, 强制类型转换
int a[3]=;
float aver1;
float sum1=a[0]+a[1]+a[2];
aver1=sum1/3;
printf("the average score of student1 are %f",aver1);
printf("\n");
或者
int a[3]=;
float aver1;
int sum1=a[0]+a[1]+a[2];
aver1=(float)sum1/3;
printf("the average score of student1 are %f",aver1);
printf("\n");