微小的加法出现在十进制后的8个位置:Android

时间:2013-04-01 23:36:08

标签: java android double

我仍然有点像这样的菜鸟。我对发生的事感到困惑。我在一个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。我知道这没什么大不同,但我很困惑为什么最后添加的东西。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:4)

出现这种情况是因为您将result声明为float,但getCaffPer()返回double。 Java在两种类型之间进行静默转换,这引入了输出的差异。