cutrightjm - 1 year ago 128
Java Question

# How do I limit the number of decimals printed for a double?

This program works, except when the number of nJars is a multiple of 7, I will get an answer like \$14.999999999999998. For 6, the output is 14.08. How do I fix exceptions for multiples of 7 so it will display something like \$14.99?

``````import java.util.Scanner;
public class Homework_17
{
private static int nJars, nCartons, totalOunces, OuncesTolbs, lbs;

public static void main(String[] args)
{
computeShippingCost();
}

public static void computeShippingCost()
{
System.out.print("Enter a number of jars: ");
Scanner kboard = new Scanner (System.in);
nJars = kboard.nextInt();
int nCartons = (nJars + 11) / 12;
int totalOunces = (nJars * 21) + (nCartons * 25);
int lbs = totalOunces / 16;
double shippingCost =  ((nCartons * 1.44) + (lbs + 1) * 0.96) + 3.0;

System.out.print("\$" + shippingCost);
}
}
``````

Answer Source

Use a DecimalFormatter:

``````double number = 0.9999999999999;
DecimalFormat numberFormat = new DecimalFormat("#.00");
System.out.println(numberFormat.format(number));
``````

Will give you "0.99". You can add or subtract 0 on the right side to get more or less decimals.

Or use '#' on the right to make the additional digits optional, as in with #.## (0.30) would drop the trailing 0 to become (0.3).

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download