在C++中打印百分比

3

可能重复:
C++ int float问题

我只是想计算并打印一个百分比,虽然用于计算的变量显示正确,但最终的百分比仍然显示为“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。我错过了什么?感谢任何帮助。


还有很多其他的重复内容,我只是选择了我找到的第一个。 - Benjamin Bannier
3个回答

3
也许
iPercent = (float)iBankRoll / iWageredTot;

如果iBankRolliWageredTot被声明为int,那么iBankRoll / iWageredTot也将是一个int,然后会转换为float,但如果初始值为0,最终结果将是float 0。

也许他应该使用 double 而不是 float。(在 C++ 中,double 是默认的浮点类型。尽管使用 float 不是错误,但它会向读者发送错误信息,因为通常只有在有特殊原因不使用 double 时才使用 float。) - James Kanze

2

您需要将/的一个操作数转换为浮点类型,否则会执行整数除法。目前您只计算了一个分数。如果您想要一个百分比,您需要乘以100。

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

1

您正在执行(看起来像)整数除法,然后将该操作的结果分配给浮点数。这就是为什么浮点数为零的原因。

要更正此错误,请改用浮点运算:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接