двойной выход в Cout C ++

0

У меня проблема с моим консольным приложением C++, когда я попытался вывести double который вычисляет из Vector int it show me 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
Теги:
cout

2 ответа

1
Лучший ответ

Ваш вектор содержит double или int s?

Похоже, что он содержит int и если это так, вам нужно сделать двойным:

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

Когда вы выполняете вычисления с типом int, вы всегда получите результат типа int.

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

Я думаю, что ваш тип элемента в gamesData[i] является int. Если вы хотите получить результат 3/2, результат равен 1, так как результат int/int является int. Если вы хотите получить двойные данные, вам нужно использовать double(gamesData[i])/(gamesData[0] + gamesData[1]). Для типа результата зависит от типа числителя в такой ситуации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню