我在 SQLite 中有一个具有这种结构的表:
String CREATE_TOTAL_PRICE = "CREATE TABLE " + TOTAL_PRICE + "("
+ KEY_TPID + " INTEGER PRIMARY KEY,"
+ KEY_TPRICE + " REAL" + ")";
我正在尝试获取列 KEY_TPRICE 的所有列值的总和。 我正在使用这种似乎有效的方法:
public int getTotalOfAmount() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery("SELECT SUM(total_price) FROM " + TOTAL_PRICE, null);
c.moveToFirst();
int i = c.getInt(0);
c.close();
return i;
}
但是当显示值时问题就来了。
你看我输入的数据是50.01,5.5
,当得到总和时我得到55
,但事实并非如此。
当我在外部运行查询时,实际总数是 55.51
。
我已经尝试将 REAL,INTEGER, FLOAT,DOUBLE
设置为我的列数据类型,但仍然
四舍五入到底是什么?请协助我提出建议。
最佳答案
我认为您收到的是 55,因为您将其读作“int”
int i = c.getInt(0);
这就是它被“转换”为 int (55) 的原因。
根据问题https://stackoverflow.com/a/17947203/4860513 ,似乎 SUM() 将返回一个与您正在阅读的列格式相同的数字。因此,尝试读取 is a double/float 并分享结果:
float i = c.getFloat(0);
double i = c.getDouble(0);
关于android - 获取 SQLite 中列值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35453435/