我正在制作一个应用程序,记录触摸屏操作使用户的时间戳。SQLite:如何获得长类型值的平均值
然后,在将读数记录在SQLite表中后,我将每列的平均值作为结尾。然而,我发现了一个错误:
E/AndroidRuntime(1344): java.lang.NumberFormatException: Invalid long: "1.40024e+08"
发生这种情况时,我试图把每一列,这是我正在做像这样的平均:
public long[] getAvg()
{
String selectQuery = "SELECT AVG(dwell_1), AVG(dwell_2), AVG(dwell_3), AVG(dwell_4), AVG(dwell_5), AVG(dwell_6), AVG(dwell_7), AVG(dwell_8), AVG(dwell_9), AVG(flight_12), AVG(flight_23), AVG(flight_34), AVG(flight_45), AVG(flight_56), AVG(flight_67), AVG(flight_78), AVG(flight_89) FROM " + TABLE;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
long[] row = new long[17];
if (cursor.moveToFirst()) {
for (int j=0; j<17; j++)
row[j] = Long.parseLong(cursor.getString(j));
}
return row;
}
这似乎是一个功能SQLite查询显示结果的方式。有什么办法可以绕过/解决这个问题吗?我需要精确的方式,所以我不能使用int或其他东西。奇怪的是,当我运行查询来直接显示表中的每条记录时,它工作正常。
任何帮助将不胜感激。提前致谢!
例外是在这里? row [j] = Long.parseLong(cursor.getString(j)); – Simon
你必须写一个浮点值到该列 – Ronnie