我正试图从数据库中获得两个浮点数(纬度和经度)。我知道他们写得正确是因为我在一个应用程序中打开了数据库,它说这两个值是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;
}
返回此值的类是我的类,它显示所有数据库内容(lat / long除外)。这是代码的一部分:
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而不是浮点数 - 因此lat打印为42而不是42.9512,而lng打印为-83而不是-83.4225。
我似乎无法理解为什么会这样。如果有人能帮助我解决这个问题,我们将不胜感激。
答案 0 :(得分:3)
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
long
是一个64位整数类型,这就是你获得舍入值的原因。
如果要获取浮点值,请使用float
或double
。 (首选double
)。