Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 浮动不';不返回SharedReferences_Java_Android - Fatal编程技术网

Java 浮动不';不返回SharedReferences

Java 浮动不';不返回SharedReferences,java,android,Java,Android,为什么float不会在另一个活动中返回所需的值。所有其他整数和字符串都有,但float没有 发件人活动: SharedPreferences prefs = this.getSharedPreferences( "details", Context.MODE_PRIVATE); SharedPreferences.Editor edit = prefs.edit(); edit.pu

为什么float不会在另一个活动中返回所需的值。所有其他整数和字符串都有,但float没有

发件人活动:

 SharedPreferences prefs = this.getSharedPreferences(
                        "details", Context.MODE_PRIVATE);
                SharedPreferences.Editor edit = prefs.edit();
                edit.putInt("weight", weight);
                edit.putInt("height", height);
                edit.putInt("age", ag);
                edit.commit();

Log.d("BMI Height" , String.valueOf(height));
Log.d("BMI Weight" , String.valueOf(weight));
 SharedPreferences prefs = getSharedPreferences(
            "details", Context.MODE_PRIVATE);

    int age=prefs.getInt("age", Integer.parseInt("16"));
    int weight=prefs.getInt("weight", Integer.parseInt("50"));
    int height=prefs.getInt("height", Integer.parseInt("165"));

Log.d("BMI Height" , String.valueOf(height));
Log.d("BMI Weight" , String.valueOf(weight));

    float formula = weight / (height * height) * 10000;

    Log.d("BMI Formula", String.valueOf(formula));
控制台中的BMI身高和体重是正确的

接收者活动:

 SharedPreferences prefs = this.getSharedPreferences(
                        "details", Context.MODE_PRIVATE);
                SharedPreferences.Editor edit = prefs.edit();
                edit.putInt("weight", weight);
                edit.putInt("height", height);
                edit.putInt("age", ag);
                edit.commit();

Log.d("BMI Height" , String.valueOf(height));
Log.d("BMI Weight" , String.valueOf(weight));
 SharedPreferences prefs = getSharedPreferences(
            "details", Context.MODE_PRIVATE);

    int age=prefs.getInt("age", Integer.parseInt("16"));
    int weight=prefs.getInt("weight", Integer.parseInt("50"));
    int height=prefs.getInt("height", Integer.parseInt("165"));

Log.d("BMI Height" , String.valueOf(height));
Log.d("BMI Weight" , String.valueOf(weight));

    float formula = weight / (height * height) * 10000;

    Log.d("BMI Formula", String.valueOf(formula));
控制台中的BMI身高和体重仍然正确,但控制台中的公式返回0.0


因为你在对整数进行数学运算,并将结果存储在浮点中。数学仍然是在整数上进行的。所以你要用体重(50)除以身高*身高(大约10公里)。这小于1,但是除以两个整数的结果总是一个整数。所以它是0

要解决这个问题,请使体重和身高浮动。

尝试这样做

edit.putFloat("key", (float) 10.10);
并尝试获取值

prefs.getFloat("key", (float) 10.0);

因为体重和身高是整数,所以结果可能是零。 比如说

int a = 10
int b = 5

float c = a/(b*b);
它将返回0,因为int中的计算结果为0,然后它将类型转换为float 0.0 你可以输入重量和高度使之像漂浮一样

float c = (float)a/((float)b*(float)b);

然后它会返回0.400,这里的问题是你要除以整数,结果会自动转换为浮点,所以如果结果不够好,你会得到0(无论哪种方式你都会得到整数)

你必须在除法中使用第一个整型来浮点数,才能得到想要的结果

float formula = (float) weight / (height * height) * 10000;

你在SharedReference中输入了int值你输入了double如果你所有的值都是int,我必须在哪里输入double Java按int值进行除法:try(float)weight/(height*height)*10000;试试这个:浮动公式=(浮动)重量/(高度*高度)*10000;但是,如果我想在发送通知/执行操作之后像这样循环,它会计算相同的时间,并在估计的时间之后执行相同的操作。例子。“5分钟--5分钟--…”并且在删除应用程序或更改时间之前一直重复