How will I round
1 < value < 1.5 to 1.5
1.5 < value < 2 to 2
How about
double rounded = Math.ceil(number * 2) / 2;
Since Math.ceil()
already returns a double, no need to divide by 2.0d
here. This will work fine as long as you're in the range of integers that can be expressed as doubles without losing precision, but beware if you fall out of that range.
public double foo(double x){
int res = Math.round(x);
if(res>x) // x > .5
return res -0.5;
else
return res + 0.5;
}
I havent compiled this but this is pseudocode and should work
Multiply by 2, use Math.ceil()
, then divide that result by 2.
public double round(double num)
{
double rounded = (int) (num + 0.4999f);
if(num > rounded)
return rounded + 0.5;
else
return rounded;
}
You can use
double numberGrade = 2.5;
Math.ceil(numberGrade);