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);