android - 获取 SQLite 中列值的总和

标签 android sqlite

我在 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/

相关文章:

sql - SQL-兴趣之间的计算重叠

android - SQLite 是本地数据库吗?

SQLite.WP81 扩展 SDK 安装在 VS2013 U2 上但无法引用 WP 8.1 项目中的程序集

android - 如何按时间限制进程

安卓 : Custom Pin Marker with buttons in Google Map API 2

android - 如何限制 LazyColumn 中的项目数?

android - 自动更新 Android 应用程序

r - 从 GitHub 导入 SQLite 数据库

sqlite - 如何在计数中显示0?

java - android中 float 到字符串的转换