import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
public class BigDecimalInvoiceApp {
public static void main(String[] args) {
double subtotal = 123.123;
double discountPercent = 0.2;
BigDecimal decimalSubtotal = new BigDecimal(Double.toString(subtotal));
decimalSubtotal = decimalSubtotal.setScale(2, RoundingMode.HALF_UP);
BigDecimal decimalDiscountPercent = new BigDecimal(Double.toString(discountPercent));
BigDecimal discountAmount = decimalSubtotal.multiply(decimalDiscountPercent);
discountAmount = discountAmount.setScale(2, RoundingMode.HALF_UP);
BigDecimal totalBeforeTax = decimalSubtotal.subtract(discountAmount);
BigDecimal salesTaxPercent = new BigDecimal(".05");
BigDecimal salesTax = salesTaxPercent.multiply(totalBeforeTax);
salesTax = salesTax.setScale(2, RoundingMode.HALF_UP);
BigDecimal total = totalBeforeTax.add(salesTax);
NumberFormat currency = NumberFormat.getCurrencyInstance();
NumberFormat percent = NumberFormat.getPercentInstance();
String message = "Subtotal: " + currency.format(decimalSubtotal) + "\n"
+ "Discount percent: " + percent.format(decimalDiscountPercent) + "\n"
+ "Discount amount: " + currency.format(discountAmount) + "\n" + "Total before tax: "
+ currency.format(totalBeforeTax) + "\n" + "Sales tax: " + currency.format(salesTax)
+ "\n" + "Invoice total: " + currency.format(total) + "\n";
System.out.println(message);
}
}
/*Subtotal: $123.12
Discount percent: 20%
Discount amount: $24.62
Total before tax: $98.50
Sales tax: $4.93
Invoice total: $103.43
*/
|