2014-04-06 59 views
1

我的問題是,當分割兩個整數時,我無法獲得浮點值。 下面的代碼C++獲取整數而不是浮點值

{ 
    cout << "Kokie skaiciai?" << endl; 
    cin >> x; 
    cin >> y; 
    cout << "Atsakymas: " << dalyba(x, y) << endl; 
} 

和功能,我使用

int dalyba (int x, int y) 
{ 
float z; 
z = (float) x/y; 
return z; 
} 

所以當x = 5和y = 2我得到一個答案2而不是2.5。 任何幫助將被折衷。

回答

1

的問題是,你的函數返回一個int,而不是float,所以float結果被轉換回一個整數,截斷。您可能希望將函數的返回值類型從int更改爲float。此外,在現代C++中,您可能希望使用C++風格的類型,例如static_cast<>

以下片斷輸出2.5預期:

#include <iostream> 
using namespace std; 

float f(int x, int y) { 
    return static_cast<float>(x)/y; 
} 

int main() { 
    cout << f(5, 2) << endl; 
} 
+0

感謝您的幫助! – user3504402

+0

@ user3504402:不客氣。 –

5

dalyba函數的返回值是一個int。這應該是一個浮動。

float dalyba (int x, int y) 
{ 
    float z; 
    z = (float) x/y; 
    return z; 
} 
+0

嘗試過了,得到了1075838976作爲一個答案。 – user3504402

+1

@ user3504402:我試過了,得到了'2.5'。如果我將'float'的值爲'2.5'並將它解釋爲'int',我會得到'1075838976'。你必須在你沒有向我們展示的代碼中做其他事情。 –