2010-10-11 174 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; 
}