Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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 小数点后8位的双精度小加法:Android_Java_Android_Double - Fatal编程技术网

Java 小数点后8位的双精度小加法:Android

Java 小数点后8位的双精度小加法:Android,java,android,double,Java,Android,Double,关于这件事,我还是有点不知所措。我对正在发生的事感到困惑。我在sqlite数据库中存储了一个3.542。使用Firefox sqlite viewer检查数据库时确认了这一点。然后,我使用以下代码检索该值: public double getCaffPer(String type) { SQLiteQueryBuilder builder = new SQLiteQueryBuilder(); builder.setTables(DRKTYPES); String[] c

关于这件事,我还是有点不知所措。我对正在发生的事感到困惑。我在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.54200005531104。我知道这没有多大区别,但我不明白为什么要添加末尾的内容。任何帮助都将不胜感激

发生该行为是因为您将
结果
声明为
浮点
,但
getCaffPer()
返回一个
双精度
。Java在这两种类型之间进行静默转换,这导致了输出的差异。

发生这种行为是因为您将
结果
声明为
浮点
,但
getCaffPer()
返回一个
双精度
。Java在这两种类型之间进行静默转换,这导致了输出的差异。

因为
result
被声明为
float
。因为
result
被声明为
float
。将其声明为float解决了问题。但是我想知道为什么在转换为双精度时,所有的垃圾都会添加到末尾。@MES无论是
double
还是
float
都不能存储一个数字的精确值。关于细节,我建议您研究一下浮点数是如何存储的。将其声明为浮点数解决了这个问题。但是我想知道为什么在转换为双精度时,所有的垃圾都会添加到末尾。@MES无论是
double
还是
float
都不能存储一个数字的精确值。关于细节,我建议您研究一下浮点数是如何存储的。