2010-10-11 355 views
1

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

段:

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

回答

9

因为你的函数的返回类型为int。将其更改为float,它会正常工作。另外,如果您只想打印2位小数,请在输出函数中使用适当的格式。你不需要用浮子本身做任何事情:

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

因为函数返回类型为int
所以结果ttl/7.0这将是一个float将被转换为int,然后返回。

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

3

你的函数的返回类型应该是浮动的,而不是INT。

3

正如其他人所指出的,不断变化的返回类型float代替int将产生float值..

要设置2个数字精确setprecision (int n),将有助于...

还可用于精确,您可以使用ios_base::precision ...

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