簡體   English   中英

C ++浮點數將轉換為int

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM