3

重複の可能性:
C ++intfloatの問題

パーセンテージを計算して印刷しようとしています。計算に使用されている変数は正しく表示されていますが、最終的なパーセンテージは「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

int、float、doubleを使ってみました。私は何が欠けていますか?助けてくれてありがとう。

4

3 に答える 3

3

多分

iPercent = (float)iBankRoll / iWageredTot;

とがとして宣言されているiBankRoll場合は、もに変換されますが、最初は、である場合は、0になります。iWageredTotintiBankRoll / iWageredTotintfloat0float

于 2012-12-20T14:40:38.270 に答える
2

/のオペランドの1つを浮動小数点型に変換する必要があります。変換しないと、整数除算が実行されます。また、現時点では分数のみを計算しています。パーセンテージが必要な場合は、100を掛ける必要があります。

iPercent = (static_cast<float>(iBankRoll) / iWageredTot) * 100;
于 2012-12-20T14:41:56.943 に答える
1

あなたは(どのように見えるか)整数除算を実行し、次にその操作の結果をfloatに割り当てています。そのため、フロートはゼロです。

これを修正するには、代わりに浮動小数点演算を実行します。

iPercent = (float)iBankRoll/(float)iWageredTot;
于 2012-12-20T14:42:33.473 に答える