天天看點

BigDecimal的用法

1.例子

public class Test {

public static void main(String[] args) {

BigDecimal big1 = new BigDecimal(“600”);

BigDecimal big2 = new BigDecimal(“300”);

//兩個BigDecimal相加

big1 = big1.add(big2);

System.out.println(big1);

//兩個BigDecimal相減

big1 = big1.subtract(big2);

System.out.println(big1);

//兩個BigDecimal相乘

big1 = big1.multiply(big2);

System.out.println(big1);

//兩個BigDecimal相除

big1 = big1.divide(big2);

System.out.println(big1);

//如果是Long 型

BigDecimal big3 = BigDecimal.valueOf(200L); big1 = big1.subtract(big3); System.out.println(“big1=” + big1);

}
           

}

//輸出效果

BigDecimal的用法

2.項目中的應用

public void setPaymentSummaryIdNull(Long paymentId, Long paymentSummaryId) {

Payment payment = payMentRepository.findOne(paymentId);

PaymentSummary summary = paymentSummaryRepository.findOne(78456137l);

int count = findPaymentSummaryIdList(paymentSummaryId).size();//總數

List resultList = findPaymentSummaryIdList(paymentSummaryId);

if (count != 0) {

for (int i = 0; i < count; i++) {

if (resultList.get(i) == paymentId) { //如果list裡的ID等于paymentId總數相減

PaymentSummary paymentSummary = paymentSummaryRepository.findOne(paymentSummaryId);

//paymentSummary.getSummaryFee()是BigDecimal類型,(paymentSummary是實體)

//必須得先把paymentSummary.getSummaryFee()轉換成String 在轉成Double

BigDecimal summaryFee = new BigDecimal

(Double.valueOf(paymentSummary.getSummaryFee().toString())); //得到總金額

BigDecimal paymentFee = new BigDecimal

(Double.valueOf(payment.getFee().toString())); //得到要修改的資料的費用

paymentSummary.setSummaryFee(summaryFee.subtract(paymentFee));//兩個值相減

paymentSummary = paymentSummaryRepository.save(paymentSummary);

}

}

}

payment.getFee();

payment.setPaymentSummary(summary);

payment = payMentRepository.save(payment);

}