Java 浮动不';不返回SharedReferences
为什么float不会在另一个活动中返回所需的值。所有其他整数和字符串都有,但float没有 发件人活动:Java 浮动不';不返回SharedReferences,java,android,Java,Android,为什么float不会在另一个活动中返回所需的值。所有其他整数和字符串都有,但float没有 发件人活动: SharedPreferences prefs = this.getSharedPreferences( "details", Context.MODE_PRIVATE); SharedPreferences.Editor edit = prefs.edit(); edit.pu
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分钟--…”并且在删除应用程序或更改时间之前一直重复