BigDecimalInvoiceApp.java Source code

Java tutorial

Introduction

Here is the source code for BigDecimalInvoiceApp.java

Source

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
*/