I want to round this double:
3.499999999999999
to:
3.50
And I already used these two methods:
<
Did you try replacing the 0's with #'s?
DecimalFormat df = new DecimalFormat("#.##"); System.out.println(df.format(input));
According to here the # will be resolved to 0 if the digit is absent
You can use the printf formatting which may be simpler.
System.out.printf("%.2f%n", 3.5);
prints
3.50
Your first solution is really, really close. Just do this:
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(input));
The reason your version doesn't work is that you're taking the input double, formatting it as a String with 2dp, but then converting it back to a double. System.out.println is then printing the double as it always would, with no special decimal-place rules.
You can use Precision class of apache commons-math
double result = Precision.round(3.499999999999999, 2);