【发布时间】:2016-07-18 15:37:28
【问题描述】:
我在 Android 上的 SQLite3 上运行一些简单的语句时遇到了一些问题。
例如:
SELECT 1234 + 0.001
那应该返回 1234.001,对吧?然而,SQLite 在模拟器 (v21) 和真实设备 (v19) 上都返回 1234。
考虑到 1234 存储在名为 Field1 的列上,类型为 REAL,在 Table1 上,我尝试了以下所有选项:
SELECT Field1 + 0.001 FROM Table1
SELECT (Field1 * 1.000) + 0.001 FROM Table1
SELECT CAST(Field1 as FLOAT) + 0.001 FROM Table1
SELECT CAST(Field1 as REAL) + 0.001 FROM Table1
SELECT Field1 + 0.001 from Table1
SELECT CAST((Field1 + 0.001) as REAL) FROM Table1
似乎没有任何效果,在每种情况下,我得到的都是 1234 而不是 1234.001。我需要在查询中从 1234 获取 1234.001,但 SQLite3 没有帮助。
我刚刚发现的另一件事:如果“Field1”= 1000 都会给我一个整数。
你能帮我解决这个问题吗?
【问题讨论】:
-
"应该返回 1234.001,对吧?" - 不必要。 1234.001 可能无法表示为浮点数。
-
您可能正在以 整数 形式检索数据。当你想要一个 float 或一个 double.
-
@CommonsWare 同意,但没有一个 >= 1000 的数字返回为 x.001,如上面的屏幕截图所示。另一方面,任何小于 1000 的数字都会按预期返回。
-
您的代码中数字的格式究竟如何?
-
我没有格式化数字。我正在用
cursor.getString()阅读它们,我猜这是罪魁祸首。