链式编程-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 参数。

如果还有更好的方法,请告诉我,学习学习

你可能感兴趣的:(代码优化,java)