Mega Code Archive

 
Categories / Java / Data Type
 

Calculation with BigDecimal

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