鏈式編程-BigDecimal 運算加減乘除

採用鏈式編程,多個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 參數。

如果還有更好的方法,請告訴我,學習學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章