2012-12-20 34 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;