Ho un problema con double, in pratica se ad esempio in ingresso inserisco il valore 1000.30 con questo codice ho come uscita questo 1000.2999877929688
come posso risolvere??ci stoò impazzendo!!
private class Dettaglio {
public double entrate, uscite;
}
private void showDetails(String anno){
SQLiteDatabase db = new BilancioHelper(this).getReadableDatabase();
final List<Dettaglio> dettagli = new ArrayList<Bilancio.Dettaglio>(12);
for (int i=1; i<=12; i++){
String mese;
if (i<10){
mese = "0"+i;
} else {
mese = ""+i;
}
String sql = "SELECT SUM(Entrata), SUM(Uscita) FROM Giornate WHERE data LIKE '"+anno+"-"+mese+"%'";
Cursor c = db.rawQuery(sql, null);
while (c.moveToNext()){
Dettaglio d = new Dettaglio();
d.entrate = c.getFloat(0);
d.uscite = c.getFloat(1);
dettagli.add(d);
}
c.close();
}
db.close();
ListAdapter adapter = new ArrayAdapter<Dettaglio>(this, R.layout.dettaglio_row, R.id.tv_mese, dettagli){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
Log.v("Bilancio", "Creo elemento in posizione "+position);
String month = new DateFormatSymbols(Locale.getDefault()).getMonths()[position];
TextView tvMonth = (TextView) row.findViewById(R.id.tv_mese);
tvMonth.setText(month);
TextView tvEntrate, tvUscite;
tvEntrate = (TextView) row.findViewById(R.id.tv_entrata);
tvUscite = (TextView) row.findViewById(R.id.tv_uscita);
Dettaglio d = dettagli.get(position);
tvEntrate.setText(d.entrate+"");
tvUscite.setText(d.uscite+"");
return row;
}
};
lista.setAdapter(adapter);
//Calcolo il totale annuale
double totaleE = 0d, totaleU = 0d;
for (Dettaglio d : dettagli){
totaleE += d.entrate;
totaleU += d.uscite;
}
TextView riepilogoE = (TextView) findViewById(R.id.tv_riepilogo_entrate);
TextView riepilogoU = (TextView) findViewById(R.id.tv_riepilogo_uscite);
riepilogoE.setText(""+totaleE);
riepilogoU.setText(""+totaleU);
}
private List<String> ottieniAnni(){
List<String> result = new LinkedList<String>();
SQLiteDatabase db = new BilancioHelper(this).getReadableDatabase();
String sql = "SELECT DISTINCT strftime('%Y',"+GiornateTable.DATA+") FROM "+GiornateTable.TABLE_NAME;
Cursor c = db.rawQuery(sql, null);
while (c.moveToNext()){
result.add(c.getString(0));
}
db.close();
return result;
}