2014-02-08 30 views
0

所以我試圖計算我的平均目標數,通過除以停止多少次拍攝數來阻止我的平均目標數。我怎麼能阻止它四捨五入我的平均爲什麼在我使用BigDecimal時四捨五入

計數器=目標受阻 goalCounter =進球

avg.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     BigDecimal avgCalc = new BigDecimal(counter/goalCounter); 
     tvDisplayAvg.setText("Goal Avg: " + avgCalc); 
    } 
}); 

所以我把它分而獲得小數,但有沒有設置的唯一分割限制的一種方法到千分之一的地方?

+2

什麼類型是計數器和goalcounter? – Dima

回答

-1

問題可能是countergoalCounter都是整數。嘗試將其中的一個在分割時加倍(例如counter/(double)goalCounter)。這是因爲如果Java看到你分割兩個整數,結果也將是一個整數。

如果它們不是整數(即它們是浮點數或雙精度),float和double類型的精度有限,並且創建BigDecimal類來糾正這種情況。製作兩個BigDecimals - 每個變量一個 - 然後將avgCalc分配給它們的商。

+0

double是非常糟糕的主意,如果你想要大的小數精度 – Dima

+0

這就是爲什麼我的答案有兩個部分。 –

5

如果您正在使用大數字,則可以使用舍入來自counter/goalCounter

avg.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     BigDecimal c = new BigDecimal(counter); 
     BigDecimal g = new BigDecimal(goalCounter); 
     BigDecimal answer=c.divide(g); 

     tvDisplayAvg.setText("Goal Avg: " + amswer.toString()); 
    } 
});