我在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()将返回与您正在读取的列相同格式的数字.因此,尝试将其读取为double / float并共享结果:
float i = c.getFloat(0);
double i = c.getDouble(0);
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!