myq_26 2013-06-07 01:58 采纳率: 16.7%
浏览 4257

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条回答 默认 最新

  • kity 2013-06-07 06: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);

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器