• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 247
  • Last Modified:

Need Help Rounding

I need help with a rounding problem. I want to take a number and convert it with two decimal places.

For instance, 345.667 would end up being 345.67; and 345 would end up being 345.00.

I have the following:

double number = Marth.round(number * 100.0)/100.0;

This works for most numbers, but when I have a whole number it converts it 345.0 with only one decimal place.

Any suggestions?
0
InquisitiveProgrammer
Asked:
InquisitiveProgrammer
  • 7
  • 2
1 Solution
 
for_yanCommented:

something like that:



DecimalFormat f = new DecimalFormat("#####.##");

double d = 345.6789;
String s = f.format(d);
0
 
for_yanCommented:

This does what you want:

        DecimalFormat fff = new DecimalFormat("#####.00");
        System.out.println(fff.format(345.6789));
        System.out.println(fff.format(365.0));

Open in new window


345.68
365.00

Open in new window

0
 
for_yanCommented:
More examples:

 DecimalFormat fff = new DecimalFormat("#####.00");
        System.out.println(fff.format(345.6789));

               System.out.println(fff.format(365.0));

        System.out.println(fff.format(365));

Open in new window



Output:

345.68
365.00
365.00

Open in new window

0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
InquisitiveProgrammerAuthor Commented:
Is there no way to keep the number as a double? Without converting to string?
0
 
for_yanCommented:
What you are asking in fact applies to strings - for double number there is no difference between

double d = 365;

double d = 365.0;

double d = 365.00;

those are all the same double - it is hen you want to print them where the difference come.

You of course can say


double d = Double.parseDouble(fff.format(345));

but it does not make much sense - if you could explain in  what context you mmay need it

0
 
for_yanCommented:
your rounding will work in the sense of giving number with no more that two digits

double number = Marth.round(number * 100.0)/100.0;

but when you apply it to number with less decimal digits - I don't see where is the program unless you want to print it
0
 
for_yanCommented:
but when you apply it to number with less decimal digits - I don't see where is the problem unless you want to print it
0
 
InquisitiveProgrammerAuthor Commented:
I'm not getting the decimals to print out correctly.

Here is my function:

 
public String roundTwoDecimals(double number) {
    	number = Math.round(number * 100.0)/100.0;
    	DecimalFormat twoDecForm = new DecimalFormat("###############.##");
    	String dollarAmount = twoDecForm.format(number);
    	//return Double.valueOf(twoDecForm.format(number));
    	return dollarAmount;
    }

Open in new window


This will work if I have a number like 34.5677, but it still won't work for when I have a number like 64 or 54.6
0
 
for_yanCommented:
you should have format "#####.00" - see my tested example
0

Featured Post

[Webinar] Database Backup and Recovery

Does your company store data on premises, off site, in the cloud, or a combination of these? If you answered “yes”, you need a data backup recovery plan that fits each and every platform. Watch now as as Percona teaches us how to build agile data backup recovery plan.

  • 7
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now