我有以下功能应该返回 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;
}
答案 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;
}