2015-04-15 3 views
-2

я не знаю, почему я получаю средний = 0. код ниже показывает, как я вычислить его, и изображение размещены ниже показывает, что я получаю в качестве выходаПочему я получаю в среднем равен нулю

Код

float avg = (goodMatchesList.size()/rawMatchesListSorted.size()) * 100; 
    Log.D(TAG, "descMatcher", "avg: " + avg); 
    Log.D(TAG, "descMatcher", "min: " + minDist); 
    Log.D(TAG, "descMatcher", "max: " + maxDist); 
    Log.D(TAG, "descMatcher", "objComputedDescExt.rows: " + matFactory.getComputedDescExtMatAt(0).rows()); 
    Log.D(TAG, "descMatcher", "rawMatchesListSorted.size: " + rawMatchesListSorted.size()); 
    Log.D(TAG, "descMatcher", "goodMatchesList.size: " + goodMatchesList.size()); 

enter image description here

+0

целочисленное деление? * проверяет код * Yup. – chrylis

ответ

5

Вы делите два целых числа - (goodMatchesList.size()/rawMatchesListSorted.size()), поэтому, если результат меньше 1, то становится 0.

с плавающей точкой разделения, используют литье:

((float)goodMatchesList.size()/rawMatchesListSorted.size())*100 

или мультипликатор на 100 перед тем делением, если вы не заботитесь о фракциях:

100*goodMatchesList.size()/rawMatchesListSorted.size() 
Смежные вопросы