2 myq 26 myq_26 于 2013.06.07 09:58 提问

SQlite 数据库不能存储double 值为字符串

我使用下面的代码

 public boolean addArea(AreaClass area , ArrayList<AreaMarkClass> areaArray)
     {      
         area.id =  getNextAreaId();
        Log.d("longitude", area.longitude);
        Log.d("latitude", area.latitude);

        ContentValues initialValues = new ContentValues();
        initialValues.put("_id", area.id);
        initialValues.put("name", area.name);
        initialValues.put("longitude", area.longitude);
        initialValues.put("latitude", area.latitude);
        initialValues.put("zoomLevel", area.zoomLevel);
        initialValues.put("creationDate",area.creationDate);

        try
        {
            mDb.insertOrThrow("TTArea", null, initialValues);
}

area.longitude 是一个字符串,它的值通过 String.value (A Double Value) 获得,现在通常是像 22.323434523464563456
但是当我检索这个值时:

public AreaClass getAreaClassWithAreaId(Integer id)
{
    String queryString = "SELECT * FROM TTArea WHERE _id = ?";
    Cursor resultSet =  mDb.rawQuery(queryString, new String[]{id.toString()}); 
    AreaClass area = new AreaClass();
    while(resultSet.moveToNext())
    {
         area = new AreaClass(
                        resultSet.getInt(resultSet.getColumnIndex("_id")),
                        resultSet.getString(resultSet.getColumnIndex("name")),
                        resultSet.getString(resultSet.getColumnIndex("longitude")),
                        resultSet.getString(resultSet.getColumnIndex("latitude")),
                        resultSet.getString(resultSet.getColumnIndex("zoomLevel")),
                        resultSet.getString(resultSet.getColumnIndex("creationDate"))
                        );
    }
    resultSet.close();
    return area;
}

大约是 22.3234。 在我的程序中我需要存储精确的数值。如何处理这个问题?

1个回答

shaojie519
shaojie519   2013.06.07 14:28

以String类型保存到数据库里。
String longitude = String.valueOf(area.longitude);
String latitude = String.valueOf(area.latitude);
initialValues.put("longitude", longitude);
initialValues.put("latitude", latitude);

取值的时候用Double.parseDouble(longitude/latitude);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!