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