SQLite查询具有浮点数的where子句是否失败?
发布时间:2020-12-12 18:59:00 所属栏目:百科 来源:网络整理
导读:我正在基于 Android的SQLite数据库中放置一个浮点数,如下所示: private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE + " (" + KEY_ID + " integer primary key autoincrement," + KEY_FLOAT + " REAL," + ......content.put(K
我正在基于
Android的SQLite数据库中放置一个浮点数,如下所示:
private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE + " (" + KEY_ID + " integer primary key autoincrement," + KEY_FLOAT + " REAL," + ... ... content.put(KEY_FLOAT,37.3f); db.insert(DATABASE_TABLE,null,content); 当我查询表时: Cursor cursor = db.query(false,DATABASE_TABLE,new String[] { KEY_ID,KEY_FLOAT,... },KEY_LATITUDE + "=37.3",null); 光标变回空白.如果我将float的值更改为37.0它可以正常工作,返回光标中的记录. 我已经测试了一段时间,将数据库列规范从“REAL”更改为“float”等.只要我在小数点后面有任何小数部分,光标返回空.到底是怎么回事? 提前致谢! 解决方法37.0在二进制浮点中是完全可表示的,因此您没有任何正常问题. 37.3不能完全表示 – 您的查询不匹配,因为数据库中的值不完全是37.3.选项: >使用基于十进制的数字类型,如果SQLite中存在这样的东西(我会在一分钟内检查) 编辑:在许多情况下,Pascal的有效滚动您自己的数字类型的解决方案是一个很好的解决方案.计算出你想要的精度水平,然后相应地进行乘法/除法…所以如果你想要2位小数的精度,你在存储一个值时乘以100,然后在取出它之后除以100.当然,您的查询需要采用“倍增”形式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET Core 导入导出Excel xlsx 文件实例
- c# – 状态栏通知xamarin native android
- c# – contenttypeorder和uniquecontenttypeorder之间的区别
- [Oracle]Sqlplus 中使用 new_value
- Inside COM读书笔记-----包容和聚合
- CASE语句是否会丢失PostgreSQL中的别名范围?
- 六大设计原则之二_里氏替换原则(LSP)
- 通过npm使用React
- postgresql – PL / pgSQL中的EXECUTE … USING语句不适用于
- Oracle PL / SQL脚本中的斜杠字符是错误的吗?