Member 14826587 Ответов: 2

Для некоторых резонов он показывает 5, а не 5.5, я использовал float для этой цели. Почему?


#include <iostream>
использование пространства имен std;
тап_п()
{
поплавок va = 11/2;
cout << va << endl;
возвращает 0;
}

Что я уже пробовал:

#include <iostream>
using namespace std;
int main()
{
    float va = 11 / 2;
    cout << va << endl;
    return 0;
}

2 Ответов

Рейтинг:
7

Patrice T

Цитата:
По какой-то причине он показывает 5, а не 5.5, я использовал float для этой цели. Почему?

Причина очень проста: в C/C++ деление целых чисел-это "целочисленное деление" с целочисленным результатом, таким образом, 5 в вашем случае, потому что 11-это 5*2+1.
Решение состоит в том, чтобы разделить поплавки или бросить на поплавки.
в вашем коде объявление va как float не изменяет деление.
#include <iostream>
using namespace std;
int main()
{
    float va = 11.0 / 2.0;
    cout << va << endl;
    return 0;
}


Рейтинг:
19

phil.o

11-целое число, 2-целое число, поэтому их деление является целочисленное деление. Пробовать

float va = (float)11 / 2
вместо.