Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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 从整数数据类型检索的值未显示为实际小数_Java_Android_Sqlite - Fatal编程技术网

Java 从整数数据类型检索的值未显示为实际小数

Java 从整数数据类型检索的值未显示为实际小数,java,android,sqlite,Java,Android,Sqlite,我的表名是TX_table,插入的列是TX_AMOUNT,为“整数”。对于我来说,插入值(比如第一行1234.56和第二行12345.67)是正确的,因为我可以通过放置断点看到这一点。 现在,如果我从TX_AMOUNT列中检索数据,值如下所示 1234.56对于第一行,这是正常的,对于第二行,它显示为12345.7 而不是12345.67。如果我输入的值最多为15位,不带小数 没问题。只有当值带有小数点时,如12345.67所示 比如12345.7 我给出以下代码: 创建表: private s

我的表名是TX_table,插入的列是TX_AMOUNT,为“整数”。对于我来说,插入值(比如第一行1234.56和第二行12345.67)是正确的,因为我可以通过放置断点看到这一点。 现在,如果我从TX_AMOUNT列中检索数据,值如下所示 1234.56对于第一行,这是正常的,对于第二行,它显示为12345.7 而不是12345.67。如果我输入的值最多为15位,不带小数 没问题。只有当值带有小数点时,如12345.67所示 比如12345.7

我给出以下代码:

创建表:

private static final String CREATE_TX_TABLE= "CREATE TABLE " + TX_TABLE + " (" +TX_UID+ " INTEGER PRIMARY KEY AUTOINCREMENT," + TX_TITLE_UID + " INTEGER," + TX_AMOUNT + " INTEGER," + TX_PARTICULARS + " VARCHAR(255)," + TX_DATE+" DATE," + TX_ID + " VARCHAR(255)," + TX_NAME + " VARCHAR(255)," + TX_CONTRA + " VARCHAR(255)," + TX_LISTVIEW_DATE + " DATE);";
插入:

public void insertTxData(String inputparticulars, String inputamount, String showSelectedTitle, String inputID, String txid, String contraYorNo){
    SQLiteDatabase db = helper.getWritableDatabase();
    ContentValues contentvalues = new ContentValues();
    if (inputparticulars.equals("") || inputparticulars.equals(null)){
        inputparticulars= "particulars not entered";
    }
    contentvalues.put(VivzHelper.TX_PARTICULARS,inputparticulars);
    // with breakpoint here, the values entered are perfectly getting in    
    contentvalues.put(VivzHelper.TX_AMOUNT, inputamount);
    contentvalues.put(VivzHelper.TX_TITLE_UID, inputID);
    contentvalues.put(VivzHelper.TX_ID, MainActivity.txid); 
    contentvalues.put(VivzHelper.TX_DATE, new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
    contentvalues.put(VivzHelper.TX_LISTVIEW_DATE, new SimpleDateFormat("dd-MM-yyyy").format(new Date()));
    contentvalues.put(VivzHelper.TX_NAME,showSelectedTitle);
    contentvalues.put(VivzHelper.TX_CONTRA,contraYorNo);
    db.insert(VivzHelper.TX_TABLE, null, contentvalues);
    String td = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
}
数据检索:

String name = titlesofReports.tagExpensesOrIncome;
SQLiteDatabase db = helper.getReadableDatabase();
String[] columns = { helper.TX_UID, helper.TX_NAME, helper.TX_PARTICULARS, 
helper.TX_AMOUNT, helper.TX_DATE,helper.TX_CONTRA}; 
Cursor c = db.query(VivzHelper.TX_TABLE, columns, (helper.TX_ID + "='" + name + "' AND " + helper.TX_DATE + "= '" + td + "'"), null, null, null,null);
gt = 0;
gt_selectedItem_number = 0; 
if (c != null) {
c.moveToFirst();
while (c.isAfterLast() == false) {
    String v_uid=(c.getString(0));
    String txTotal = (c.getString(3));
    Float dd=Float.parseFloat(txTotal);
    gt = gt + new Float(txTotal);
    BigDecimal bdtxTotal= new BigDecimal(c.getString(3));
}
使用断点,当我验证时,我可以看到所有4个变量,如
txTotal
dd1
dd
bdTxTotal
给出了与12345.7相同的结果,而不是12345.67

是否检查了保存在DB中的值?这将有助于隔离DB级别或API级别的问题。是的,我使用错误显示的断点检查了问题。这段代码将一个看起来像浮点数的字符串插入到一个整数列中。请决定类型。字符串将12345.67插入整数列。列应该是什么类型。?如果字符串插入1234.56,则按原样检索。如果字符串插入12345.67,则检索值为12345.7I将列类型从+TX_AMOUNT+“INTEGER更改为FLOAT。更改版本号并运行程序。问题仍然存在。我得到的是12345.7,而不是12345.67。