在cout C ++中输出double

时间:2013-10-08 03:06:47

标签: c++ cout

当我尝试输出从Vector int计算的double时,我的C ++控制台应用程序出现问题,它显示0

for (int i  = 0; i < max_streak_length; i++)
{
    cout<< "data win streak of " << i << " acheived : " << gamesData[i]; 
    cout<< " Propallty \t "<< gamesData[i]/(gamesData[0] + gamesData[1])<<endl;

}

输出

data win streak of 0 acheived : 6 Propallty 0
data win streak of 1 acheived : 5 Propallty 0
data win streak of 2 acheived : 2 Propallty 0
data win streak of 3 acheived : 0 Propallty 0
data win streak of 4 acheived : 0 Propallty 0
data win streak of 5 acheived : 1 Propallty 0

2 个答案:

答案 0 :(得分:1)

您的矢量是否包含doubleint s?

看起来它包含int s,如果是这种情况你需要强制转换为双倍:

static_cast<double>(gamesData[i])/(gamesData[0] + gamesData[1])

使用int类型执行计算时,您将始终获得int类型的结果。

答案 1 :(得分:0)

我认为gamesData[i]中的元素类型为int。如果您想获得3/2的结果,则结果为1,因为int/int的结果为int。如果您想获得双倍数据,则需要使用 而是double(gamesData[i])/(gamesData[0] + gamesData[1])。对于结果类型,取决于在这种情况下分子的类型。