我仍然有点像这样的菜鸟。我对发生的事感到困惑。我在一个sqlite数据库中存储了一个3.542。使用Firefox sqlite viewer检查数据库证实了这一点。然后我使用以下代码检索该值:
public double getCaffPer(String type) {
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables(DRKTYPES);
String[] columns = { MGCAFF };
String[] selectionArgs = { type };
Cursor cursor;
cursor = builder.query(ourDatabase, columns, TYPE + "=?",
selectionArgs, null, null, null);
float result = -1;
if (cursor.getCount() != 0) {
cursor.moveToFirst();
result = cursor.getFloat(0);
}
cursor.close();
return result;
}
调试显示结果值为3.542。但后来在我的代码中我称之为这个方法:
double caff = helper.getCaffPer(typeName);
它给了我3.5420000553131104。我知道这没什么大不同,但我很困惑为什么最后添加的东西。任何帮助,将不胜感激。
答案 0 :(得分:4)
出现这种情况是因为您将result
声明为float
,但getCaffPer()
返回double
。 Java在两种类型之间进行静默转换,这引入了输出的差异。