使用sqlite TOTAL()命令时,结果有一个(6个字符)数字限制

时间:2017-08-16 04:05:35

标签: android sql sqlite

我在SQLite(在Android上)遇到TOTAL()问题。似乎如果结果大于6个字符(包括小数位),则它会舍入并使用E表示法。

我使用游标包装器提取结果的(文本)值:

String balance = getString(getColumnIndex(DebtTable.Cols.balance))

...但它产生的结果在值和格式方面都是错误的。

我很感激任何帮助,顺便说一下,我的sql知识不是特别好。

提前致谢

1 个答案:

答案 0 :(得分:0)

您应该使用相应的 Cursor get 方法。例如而不是

 String balance = getString(getColumnIndex(DebtTable.Cols.balance));

您可以使用: -

String balance = Double.toString(csr.getDouble(DebtTable.Cols.balance));

或者也许: -

String balance = NumberFormat.getCurrencyInstance().format(csr.getDouble(DebtTable.Cols.balance));

以下是来自How flexible/restricive are SQLite column types?的示例,其中显示了不同的get方法如何检索数据(即VALUE AS ???? eqautes to method将get???? ): -

Double myREAL = 213456789.4528791134567890109643534276 ; : -

08-08 09:19:03.658 13575-13575/mjt.soqanda D/ColTypes: Column=REAL_COL<<
08-08 09:19:03.658 13575-13575/mjt.soqanda D/ColTypes:  VALUE AS INT >>213456789<<
08-08 09:19:03.658 13575-13575/mjt.soqanda D/ColTypes:  VALUE AS LONG >>213456789<<
08-08 09:19:03.658 13575-13575/mjt.soqanda D/ColTypes:  VALUE AS STRING >>2.13457e+08<<
08-08 09:19:03.658 13575-13575/mjt.soqanda D/ColTypes:  VALUE AS DOUBLE >>2.134567894528791E8<<
08-08 09:19:03.658 13575-13575/mjt.soqanda D/ColTypes:  VALUE AS FLOAT >>2.1345678E8<<
08-08 09:19:03.658 13575-13575/mjt.soqanda D/ColTypes:  VALUE AS SHORT >>6037<<
08-08 09:19:03.658 13575-13575/mjt.soqanda D/ColTypes:      Unable to handle with getBlob.