I need to round to nearest 0.5 if possible.
10.4999 = 10.5
Here is quick code:
import java.text.DecimalFormat;
import java.math.RoundingMode;
Rather than try rounding to the nearest 0.5, double it, round to the nearest int, then divide by two.
This way, 2.49 becomes 4.98, rounds to 5, becomes 2.5.
2.24 becomes 4.48, rounds to 4, becomes 2.
public class DecimalFormat
{
public static void main(String[] args)
{
double test = 10.4999;
double round;
int i = (int) test;
double fraction = test - i;
if (fraction < 0.25) {
round = (double) i;
} else if (fraction < 0.75) {
round = (double) (i + 0.5);
} else {
round = (double) (i + 1);
}
System.out.println("Format: " + round);
}
}
A more general solution to @RobWatt's answer in case you ever want to round to something else:
private static double roundTo(double v, double r) {
return Math.round(v / r) * r;
}
System.out.println(roundTo(6.1, 0.5)); // 6.0
System.out.println(roundTo(10.4999, 0.5)); // 10.5
System.out.println(roundTo(1.33, 0.25)); // 1.25
System.out.println(roundTo(1.44, 0.125)); // 1.5