我正在尝试从数据库中获取两个浮点数(纬度和经度)。我知道它们的编写是正确的,因为我在应用程序中打开了数据库,它说这两个值是 42.9512 和 -83.4225(只是我选择添加的一个随机位置)。
我最初在我的 db 类的一个方法中将这两个值作为一个包返回,但还创建了一个只返回纬度的方法(只是为了测试它是否可以工作):
public long getLat(long l) throws SQLException {
String[] cols = new String[]{KEY_ROWID,KEY_ADDRESS,KEY_LATITUDE,KEY_LONGITUDE};
Cursor c = ourDB.query(DATABASE_TABLE, cols, KEY_ROWID + "=" + l, null, null, null, null);
if(c != null) {
c.moveToFirst();
long lat = c.getLong(2); //latitude column
return lat;
}
return 0l;
}
该值返回到的类是我的类,它显示所有数据库内容(纬度/经度除外)。这是代码的一部分:
Bundle favLoc = temp.getLatLng(rowID);
long lat = temp.getLat(rowID);
long lng = favLoc.getLong("lng");
Toast.makeText(SQLView.this, "Row id: " + rowID + "\nlat: " + lat + "\nlng: " + lng, Toast.LENGTH_LONG).show();
Intent i = new Intent("com.blah.blah.MAINACTIVITY");
i.putExtras(favLoc);
setResult(RESULT_OK, i);
finish();
break;
temp 是我的 DBHelper 类的一个实例。我尝试从 Bundle 中获取 long 值,但我稍微更改了代码以尝试使用我专门为 lat 值创建的新方法获取 lat 值。我使用 toast 作为调试工具只是为了显示值。
出于某种原因,打印输出的值始终打印为 int 而不是 float - 因此 lat 打印为 42 而不是 42.9512,lng 打印为 -83 而不是 -83.4225。
我似乎无法理解为什么会发生这种情况。如果有人可以帮助我解决这个问题,将不胜感激。