1.5
is, number of significant digits notwithstanding, the same as 1.50
(and even 1.5000000000000
).
You need to separate the value of the number from its presentation.
If you want it output with two decimal digits, just use String.format
, such as with:
public class Test
{
public static void main(String[] args) {
double d = 1.50000;
System.out.println(d);
System.out.println(String.format("%.2f", d));
}
}
which outputs:
1.5
1.50
If you still want a function that does all that for you and gives you a specific format, you'll need to return the string with something like:
public static String roundOff(double num, double acc, String fmt) {
num *= acc;
num = Math.ceil(num);
num /= acc;
return String.format(fmt, num);
}
and call it with:
resultString = roundOff(value, 20, "%.2f"); // or 100, see below.
This will allow you to tailor the accuracy and output format in any way you desire, although you can still hard-code the values if you want simplicity:
public static String roundOff(double num) {
double acc = 20;
String fmt = "%.2f";
num *= acc;
num = Math.ceil(num);
num /= acc;
return String.format(fmt, num);
}
One final note: your question states that you want to round to "two decimals" but that doesn't quite gel with your use of 20
as the accuracy, since that will round it up to the next multiple of 1/20
. If you really want it rounded up to two decimals, the value you should be using for accuracy
is 100
.