以零结尾的浮点数据类型值在ResultSet中以指数表示法提取出来

时间:2018-09-25 10:58:33

标签: java sql sql-server resultset

我在Microsoft Sql Server数据库中有表,并且它具有float数据类型的列。我试图在Java ResultSet中检索这些列类型的值,然后使用这些值。下面是相同的代码。

            while (rsTran.next()) {
                txnList.add(rsTran.getInt(1));
                for (int i = 4; i <= col; i++) {
                    if (i != col) {
                        if (i == 9 || i == 10) {
                            System.out.println("BigDecimal Value:" + rsTran.getBigDecimal(i));
                            System.out.println("Float Value:" + rsTran.getDouble(i));
                            tranFileWriter.append(rsTran.getBigDecimal(i) != null ? (rsTran.getBigDecimal(i)+"") : "");
                        } else {
                            tranFileWriter.append(rsTran.getString(i) != null ? rsTran.getString(i) : "");
                        }
                        tranFileWriter.append('|');
                    } else if (i == col) {
                        tranFileWriter.append("MT" + rsTran.getString(i));
                    }

                }

                tranFileWriter.append(NEW_LINE_SEPARATOR);

            }

当那些float数据类型列的值以零结尾时,这很奇怪。当值以零结尾时,sysout语句以指数格式打印值;而当值不以零结尾时,sysout语句可以正常打印。 例如,值1986373620.00、1986373620将按以下方式打印。

  BigDecimal Value:1.98637362E+9  

如果该值为1986373622,则它将打印出确切的值,并且很好。

 BigDecimal Value:1986373622

任何人都想为什么只对以零结尾的值才具有这种行为。

0 个答案:

没有答案