我在SQLite(在Android上)遇到TOTAL()问题。似乎如果结果大于6个字符(包括小数位),则它会舍入并使用E表示法。
我使用游标包装器提取结果的(文本)值:
String balance = getString(getColumnIndex(DebtTable.Cols.balance))
...但它产生的结果在值和格式方面都是错误的。
我很感激任何帮助,顺便说一下,我的sql知识不是特别好。
提前致谢
答案 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.