Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android sqlite无请求舍入数字_Java_Android_Database_Sqlite_Android Sqlite - Fatal编程技术网

Java Android sqlite无请求舍入数字

Java Android sqlite无请求舍入数字,java,android,database,sqlite,android-sqlite,Java,Android,Database,Sqlite,Android Sqlite,我创建了一个简单的sqlite表,其中包括: private static final String TABLE_CREATE = "CREATE TABLE tab1(" + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "amount NUMERIC NOT NULL DEFAULT 0" + ");"; db.execSQL(TABLE_CREATE)

我创建了一个简单的sqlite表,其中包括:

private static final String TABLE_CREATE = "CREATE TABLE tab1("
                + "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
                + "amount NUMERIC NOT NULL DEFAULT 0"
                + ");";

db.execSQL(TABLE_CREATE);
但当我在表中插入值时,它们会四舍五入:

INSERT INTO tab1(amount) VALUES (123456789.12) // Becomes 1.23457e+08
INSERT INTO tab1(amount) VALUES (12345.67)     // Becomes 12345.7
INSERT INTO tab1(amount) VALUES (300087.59)    // Becomes 300088
INSERT INTO tab1(amount) VALUES (3000001.22)   // Becomes 3e+06
如何将完整数字保存到表中,并且仍然能够使用以下查询:

SELECT * FROM tab1 WHERE amount < 0
从表1中选择*其中金额<0
编辑:

@MikeT谢谢你的建议,我正在使用游标getString方法。
现在我使用getDouble方法,然后转换为BigDecimal和舍入,它解决了问题。

我认为您的问题是如何提取值,而不是如何存储值

看起来您正在使用Cursor
getString
方法

尝试使用游标
getFloat
getDouble
方法

以下(从中提取)显示了各种游标
get???
方法的结果(已捕获并处理
getBlob
中的异常除外):-

对于
Double myREAL=213456789.452879113456789109643534276:-

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.

08-08 09:19:03.658 13575-13575/mjt.soqanda D/ColTypes:Column=REAL_COL>213456789>213456789>2.13457e+08>2.134567894528791E8>2.1345678E8>6037
amount TEXT NOT NULL默认值0
我现在正在使用“getDouble”方法。它可以工作,但在得到它之后,我将转换为bigdecimal和round,否则我会得到一些小错误,比如209999999。。。。而不是2,10。