0

当我尝试double从 Vector int 输出该计算时,我的 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
4

2 回答 2

1

您的向量是包含double还是ints?

看起来它包含ints,如果是这种情况,您需要强制转换为双精度:

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

当您使用 type 执行计算时int,您将始终得到 type 的结果int

于 2013-10-08T03:09:33.417 回答
0

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

于 2013-10-08T03:15:20.073 回答