Как работает 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 шт):
Судя по всему num имеет тип float или double. Когда в num записывается длина, она приводится к типу float. И когда мы получаем результат, делим int на float и получаем результат float. В первом же случае мы имеем результат int, т.к. int/int == int.