2011-06-24 59 views
0

我遇到了從我的SQLite數據庫中正確地求和浮動數據的問題。我已經創建了我的表,如下所示,我通過String sql4將'amount'列設置爲FLOAT。從SQLite數據庫爲Android應用程序彙總浮動數據庫

我有一個EditText'值',其中用戶輸入一個值,然後通過ContentValues cv2輸入到數據庫中。

所有這些工作正常,當我從外部檢查數據庫時記錄十進制值。然而,當我嘗試通過mCursor1檢索它時,輸出顯示爲9.0而不是9.18,之後我進行了兩次連續輸入2.21和6.97 ...... .. 但是,當我將數據輸出到xml文件中並在Excel中添加我達到了9.18。這會讓我相信它一定是由於mCursor1而引起的,但我只是在猜測。 任何想法,我的問題在哪裏?

String sql4 = "create table tracker (_id INTEGER PRIMARY KEY " + 
     "AUTOINCREMENT, category_name TEXT NOT NULL, date DATE NOT NULL, place NUMERIC NOT NULL," + 
     "amount FLOAT NOT NULL, day_id INTEGER NOT NULL, week_id INTEGER NOT NULL," + 
     "month_id INTEGER NOT NULL, year_id INTEGER NOT NULL)"; 

ContentValues cv2 = new ContentValues(); 
cv2.put("amount", value.getText().toString()); 
mDb.insert("tracker", null, cv2); 

float total1 = 0; 
      mCursor1 = mDb.rawQuery(
        "SELECT SUM(amount) FROM tracker", null); 
       if(mCursor1.moveToFirst()) { 
        total1 = mCursor1.getInt(0); 
       } 
      mCursor1.close(); 

      String a = Float.toString((float)total1);   
      displayTotal.setText("Total €" + a); 
+0

不要使用浮動貨幣。 – joey

回答

1

您使用

mCursor1.getInt(0); 

,但你應該使用

mCursor1.getFloat(0); 
+0

這將是一個,歡呼! – hotshots

1

嘗試使用mCursor1.getDouble()mCursor1.getFloat()代替mCursor1.getInt()

+0

謝謝,沒有發現,工作了一種享受! – hotshots

1
total1 = mCursor1.getInt(0); 

這裏是你的問題。)