0

我正在尝试从数据库中获取两个浮点数(纬度和经度)。我知道它们的编写是正确的,因为我在应用程序中打开了数据库,它说这两个值是 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。

我似乎无法理解为什么会发生这种情况。如果有人可以帮助我解决这个问题,将不胜感激。

4

1 回答 1

3

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

long是一个 64 位整数类型,这就是你得到四舍五入值的原因。

如果要获取浮点值,请使用floator double。(更喜欢double)。

于 2013-08-28T19:14:34.157 回答