Calculation with BigDecimal : BigDecimal « Data Type « Java

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";


/*Subtotal:         $123.12
Discount percent: 20%
Discount amount:  $24.62
Total before tax: $98.50
Sales tax:        $4.93
Invoice total:    $103.43


Related examples in the same category

1.Round a double
2.Create Big Decimal Values via a long
3.Create a BigDecimal vis string
4.Multiply one BigDecimal to another BigDecimal
5.Subtract from one BigDecimal another BigDecimal
6.Divide one BigDecimal from another BigDecimal
7.Negate a BigDecimal
8.Setting the Decimal Place of a Big Decimal Value
9.Truncates the big decimal value
10.Do math operation for BigDecimal
11.Operate with big decimal values
12.Round a double by setting the scale
13.Create Big Decimal Values via a string
14.Parse BigDecimal
15.Formats BigDecimal into a SQL floating-point literal
16.Value is rounded using the given method which is any method defined in BigDecimal
17.Round the given value to the specified number of decimal places. The value is rounded using the BigDecimal.ROUND_HALF_UP method.
18.Convert Object to BigDecimal
19.BigDecimal and BigInteger sqare root
20.BigDecimal quadratic