ユーザーが作成したタッチスクリーンアクションのタイムスタンプを記録するアプリを作成しています。
次に、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などは使えません。
奇妙なことに、クエリを実行してテーブル内のすべてのレコードをまっすぐに表示すると、正常に機能します。
どんな助けでも大歓迎です。前もって感謝します!