我在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
任何人都想为什么只对以零结尾的值才具有这种行为。