採用鏈式編程,多個BigDecimal 類型加減乘除
例如:
30.22+55.02+60.4/3.2
如果單個運算:
// 保存結果
BigDecimal result = BigDecimal.ZERO;
result = new BigDecimal("30.22").add(new BigDecimal("55.02"));
result = result.add(new BigDecimal("60.4").divide(new BigDecimal("3.2")));
// 打印結果
System.out.println(result);
如果從java對象中取還需要 null 值判斷,以及除的時候0不能爲除數.
用一個對象包裝計算,採用鏈式編程:
public class Calculate {
private BigDecimal results = BigDecimal.ZERO;
public Calculate() {}
public Calculate(BigDecimal value) {
if(isNull(value)) {
results = value;
}
}
private boolean isNull(BigDecimal value) {
return value != null;
}
/**
* 加.
* @param value
* @return
*/
public Calculate add(BigDecimal value) {
if(isNull(value)) {
results = results.add(value);
}
return this;
}
/**
* 減.
* @param value
* @return
*/
public Calculate subtract(BigDecimal value) {
if(isNull(value)) {
results = results.subtract(value);
}
return this;
}
/**
* 乘.
* @param value
* @return
*/
public Calculate multiply(BigDecimal value) {
if(isNull(value)) {
results = results.multiply(value);
}
return this;
}
/**
* 除.
* @param value
* @return
*/
public Calculate divide(BigDecimal value) {
if(isNull(value) && !BigDecimal.ZERO.equals(value)) {
results = results.divide(value);
}
return this;
}
/**
*獲取結果
*/
public BigDecimal getResutls() {
return results;
}
}
相同的,我們來運算:30.22+55.02+60.4/3.2
Calculate c = new Calculate();
c.add(new BigDecimal("30.22"))
.add(new BigDecimal("55.02"))
.add(new Calculate(new BigDecimal("60.4")
.divide(new BigDecimal("3.2")))
.getResutls());
// 打印結果
System.out.println(c.getResutls());
這樣看起來更直觀和簡潔,如果還需精度或者舍入方式再加一個MathContext
參數。
如果還有更好的方法,請告訴我,學習學習