繁体   English   中英

C ++浮点数将转换为int

[英]C++ floats being converted to ints

我有以下函数,应该返回平均l1 - l7 但是,它似乎只返回一个整数。 为什么这样做,如何使它返回四舍五入到小数点后两位的浮点数?

片段:

int lab_avg(int l1,int l2,int l3,int l4,int l5,int l6,int l7) {
    float ttl;
    ttl = l1 + l2 +l3 +l4 +l5 +l6 +l7;
    return ttl / 7.0; 
}

因为您函数的返回类型是int 将其更改为float即可正常工作。

另外,如果只想打印两位小数,则在输出函数中使用适当的格式。 您不需要对浮点数本身做任何事情:

printf("%.2f", some_value);

因为函数的返回类型是int
因此,将结果ttl/7.0 (将是float将转换为int ,然后返回。

将返回类型更改为float以解决此问题。

函数的返回类型应为float而不是int。

正如其他人指出的那样,将返回类型更改为float而不是int将产生一个float值。

设置2位数的精度setprecision ( int n )将很有帮助...

同样为了精度,您可以使用ios_base::precision ...

float ttl;
float lab_avg(int l1,int l2,int l3,int l4,int l5,int l6,int l7) 
 {

 ttl = l1 + l2 +l3 +l4 +l5 +l6 +l7;
 return (ttl/7); 
 }

int main()
 {
  lab_avg(11,12,13,14,15,16,17);
   printf("%.2f", ttl);
  return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM