当我尝试输出从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
答案 0 :(得分:1)
您的矢量是否包含double
或int
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])
。对于结果类型,取决于在这种情况下分子的类型。