2012-12-20 53 views
3

可能重複:
C++ int float problem打印百分比

我只是想計算和打印百分比,雖然在計算中使用的變量正確顯示,該最終百分比一直顯示爲「0」。下面是代碼:

int iWageredTot = iBet * 4 * iGames; 
    cout<<"Total Won: "<<iBankRoll<<endl; 
    cout<<"Wagered total: "<<iWageredTot<<endl; 
    float iPercent; 
    iPercent = iBankRoll/iWageredTot; 
    cout<<iPercent<<"% edge\n"<<endl; 

這是輸出:

Total won: -770 
Wagered Total: 4000 
0% edge 

我使用整型,浮點和雙重審判。我錯過了什麼?感謝您的任何幫助。

+0

有噸其他重複的,我只是拿起第一,我發現之一。 –

回答

3

也許

iPercent = (float)iBankRoll/iWageredTot; 

如果iBankRolliWageredTot被聲明爲intiBankRoll/iWageredTot也將是一個int將被再轉換爲float,但如果它的最初0,你會得到一個float 0結束

+0

也許他應該使用'double'而不是'float'。 ('double'是C++中的默認浮點類型,雖然使用'float'並不是錯誤,但它會向讀者發送錯誤的消息,因爲'float'通常只在沒有特殊原因'double'。) –

2

您需要將/的其中一個操作數轉換爲浮點類型,否則將執行整數除法。你現在也只計算一個分數。如果你想有一個百分比,則需要100

iPercent = (static_cast<float>(iBankRoll)/iWageredTot) * 100; 
1

乘以您正在執行(什麼樣子)整數除法,然後指定該操作爲float的結果。這就是浮動爲零的原因。

爲了解決這個問題,執行浮點運算來代替:

iPercent = (float)iBankRoll/(float)iWageredTot;