我的应用程序具有一项功能,可以根据身高和体重来计算BMI。 BMI的结果是浮动的。我如何将浮点值转换为字符串以将结果保存到Firebase中,然后再检索。因为据我所知,firebase数据库无法将结果保存为浮点值。我可以使用parseString吗?如何编码。预先谢谢你。
public void bmiCalculator(View v) {
String heightStr = height.getText().toString();
String weightStr = weight.getText().toString();
if (heightStr != null && !"".equals(heightStr)
&& weightStr != null && !"".equals(weightStr)) {
float heightValue = Float.parseFloat(heightStr) / 100;
float weightValue = Float.parseFloat(weightStr);
float bmi = weightValue / (heightValue * heightValue);
}
}
private void displayBMI(float bmi) {
String bmiLabel = "";
if (Float.compare(bmi, 15f) <= 0) {
bmiLabel = getString(R.string.very_severely_underweight);
} else if (Float.compare(bmi, 15f) > 0 && Float.compare(bmi, 16f) <= 0) {
bmiLabel = getString(R.string.severely_underweight);
} else if (Float.compare(bmi, 16f) > 0 && Float.compare(bmi, 18.5f) <= 0) {
bmiLabel = getString(R.string.underweight);
} else if (Float.compare(bmi, 18.5f) > 0 && Float.compare(bmi, 25f) <= 0) {
bmiLabel = getString(R.string.normal);
} else if (Float.compare(bmi, 25f) > 0 && Float.compare(bmi, 30f) <= 0) {
bmiLabel = getString(R.string.overweight);
} else if (Float.compare(bmi, 30f) > 0 && Float.compare(bmi, 35f) <= 0) {
bmiLabel = getString(R.string.obese_class_i);
} else if (Float.compare(bmi, 35f) > 0 && Float.compare(bmi, 40f) <= 0) {
bmiLabel = getString(R.string.obese_class_ii);
} else {
bmiLabel = getString(R.string.obese_class_iii);
}
bmiLabel = bmi + "\n\n" + bmiLabel;
result.setText(bmiLabel);
}
答案 0 :(得分:1)
...据我所知,firebase数据库无法将结果保存为浮点值。
Firebase可以存储任何有效的JavaScript数字值,该值涵盖的范围远远超出BMI值的可能范围。因此,如果需要,您可以直接将浮点值存储在数据库中。
但是,如果要将float
转换为字符串,请使用:
String.valueOf(23.42) // returns "23.42"
如果要将包含数字的字符串转换回float
,请使用:
Float.parseFloat("23.42") // returns 23.42