C ++浮动转换为整数

时间:2010-10-11 05:20:49

标签: c++ floating-point

我有以下功能应该返回 l1 - l7 的平均值。但是,它似乎只返回一个整数。为什么这样做,如何让它返回一个舍入为2位小数的浮点数?

段:

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; 
}

5 个答案:

答案 0 :(得分:9)

因为函数的返回类型是int。将其更改为float,它会正常工作。

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

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

答案 1 :(得分:3)

因为函数返回类型是int。所以结果ttl/7.0将成为float,然后返回int

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

答案 2 :(得分:3)

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

答案 3 :(得分:3)

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

要设置2位精度setprecision ( int n ),将会很有帮助...

另外,对于精确度,您可以使用ios_base::precision ...

答案 4 :(得分:0)

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;
}