This question already has an answer here:
- Double value returns 0 [duplicate] 3 answers
The function below gets two values from sharedpreferences, weight and height, and I use these to calculate the BMI, When I print the content of the values I get the values i have entered in the sharedprefs ( which is good) but then when i run a division operation on them, I always get 0 as a result.. Where is the error?
public int computeBMI(){
SharedPreferences customSharedPreference = getSharedPreferences(
"myCustomSharedPrefs", Activity.MODE_PRIVATE);
String Height = customSharedPreference.getString("heightpref", "");
String Weight = customSharedPreference.getString("weightpref", "");
int weight = Integer.parseInt(Weight);
int height = Integer.parseInt(Height);
Toast.makeText(CalculationsActivity.this, Height+" "+ Weight , Toast.LENGTH_LONG).show();
int bmi = weight/(height*height);
return bmi;
}
You're doing integer division.
You need to cast one operand to double
.
You are doing an integer division, cast the values to float
and change the datatype of the variable bmi
to float
.
Like this:
float bmi = (float)weight/(float)(height*height);
You should also change the return type of your method public int computeBMI()
to float
.
I recommend you to read this stackoverflow question.
Here you have a list of the Primitive Data Types in Java with its full description.
Hope it helps!
Because bmi
is an integer. Either declare bmi
or Weight, Height
as floating point numbers. When you use integers in a division, you will get integer division. When you use doubles/floats, you will get floating point division
来源:https://stackoverflow.com/questions/10455677/division-in-java-always-results-in-zero-0