[英]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.