我正在尝试确定我是否在sqlite中发现了一个错误,或者只是在我的理解中(因为我没有很多经验)。 (而且,是的,我已经检查了sqlite bug跟踪器。)
我有一个Android,我想在数据库中存储双打。我还想存储一个记录,其中的值可能尚未设置(即无效)。要跟踪此状态,我想存储Double.NaN。
所以当我这样创建数据库表时
create table Example (myRecordId integer primary key autoincrement, someString text not null, problemDouble REAL);
在problemDouble为Double.NaN的位置插入一条记录,然后通过Cursor.getDouble(...)访问我将返回一个值为0.0的Java double。
现在,如果我以这种方式创建表格(使用文本而不是真实的)
create table Example (myRecordId integer primary key autoincrement, someString text not null, problemDouble text);
将Java double转换为字符串的记录插入并以相同的方式访问它,然后返回值为NaN的double。
我认为sqlite应该是无类型的,但是当列是REAL时,它似乎正在弄乱值。或者是sql REAL不支持NaN值吗?
我的假设是sqlite只是将REAL值转换为后台的字符串。
那么这种不一致会被视为错误吗?