Как работает QVector.length()

Считаю вероятность достать шарик определенного цвета из корзины шариков.

basket_1 - это QVector<int> который хранит какое-то кол-во шариков.

b1_cnt - кол-во синих шариков в basket_1

Пример 1:

//Считаем вероятности для первой корзины достать синий шарик
if (b1_cnt >= 1){
    num = b1_cnt/basket_1.length();
} else num = 0;

Пример 2:

//Считаем вероятность для первой корзины достать синий шарик
if (b1_cnt >= 1){
    num = basket_1.length();
    num = b1_cnt/num;
} else num = 0;

И вот что мне интересно. В реализации первого примера мы получаем num = 1 или num = 0, а в реализации второго примера нормальные цифры отношения синих шаров к общей массе шаров в корзине.

В чем проблема? Если .length возвращает int, то какая разница где я её возьму, отдельной переменной или в выражении. Возможно я что-то не понимаю?


Ответы (1 шт):

Автор решения: Gleb

Судя по всему num имеет тип float или double. Когда в num записывается длина, она приводится к типу float. И когда мы получаем результат, делим int на float и получаем результат float. В первом же случае мы имеем результат int, т.к. int/int == int.

→ Ссылка