-2

I wrote this code:

double sums = Math.round(sum) * 100.00 / 100.00;

I am only getting one 0 after the decimal (e.g. 10.0) but I want 10.00.

Is there something wrong ?

2 Answers2

1

I suspect you intended

double sums = Math.round(sum * 100) / 100.0;

This will round the number to 2 decimal places.

I am only getting one 0 after the decimal (e.g. 10.0) but I want 10.00.

The number 10.0 == 10.00 and there is no difference except the formatting. You can format the String and round it at the same time.

double sum = 9.999;
String fmt = String.format("%.2f", sum);
// fmt = "10.00"

A number is just a numebr, it has no inherent format.

Peter Lawrey
  • 525,659
  • 79
  • 751
  • 1,130
0

Use String.format to be sure you get it only the number of digit you wanted

For Example if i write

public static void main(String[] args) {
        double sum=23.90;
        double sums = Math.round(sum * 100) / 100.0;

        System.out.println(sums);

    }

It will give me output upto one decimal point i.e 23.9

but if i change the same code to

public static void main(String[] args) {
        double sum=23.945;
        double sums = Math.round(sum * 100) / 100.0;
        System.out.println(sums);
    }

I get output to two decimal Point i.e 23.95

But with String format you will be always sure how many decimal you are going to print

public static void main(String[] args) {
        double sum=23.945;
        double sums = Math.round(sum * 100) / 100.0;
        String fmt = String.format("%.1f", sums);
        System.out.println(fmt);
    }

Output 24.0 .. But it has got the problem of rounding So better Practice is to use first convert it into String and then trim the Characters

Ankur Anand
  • 3,873
  • 2
  • 23
  • 44