我有以下函數應該返回平均值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;
}