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

你可能感兴趣的:(java,UP)