我有以下函数应该返回平均值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;
}
我有以下函数应该返回平均值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;
}
因为你的函数的返回类型为int
。将其更改为float
,它会正常工作。另外,如果您只想打印2位小数,请在输出函数中使用适当的格式。你不需要用浮子本身做任何事情:
printf("%.2f", some_value);
因为函数返回类型为int
。
所以结果ttl/7.0
这将是一个float
将被转换为int
,然后返回。
将返回类型更改为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;
}