java练习代码之BigDecimal操作
import org.junit.Test;
import java.math.BigDecimal;
/**
* Created by shiqiang on 2018/1/11.
*/
public class Demo extends BaseJunit{
@Test
public void getF() {
Character c = 'a';
System.out.println(new BigDecimal(c));
BigDecimal bigDecimal = BigDecimalUtilDemo.subtraction(10, 2, new BigDecimalUtilDemoBase.BigDecimalSub() {
@Override
public BigDecimal sub(Object var1, Object var2) {
return BigDecimalUtilDemoBase.toBigDecimal(var1).subtract(BigDecimalUtilDemoBase.toBigDecimal(var2));
}
});
System.out.println(bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP));
BigDecimal bb = BigDecimalUtilDemo.multi.operation(BigDecimalUtilDemoBase.getBigDecimal(1),
BigDecimalUtilDemoBase.getBigDecimal(10));
System.out.println(bb);
}
}
import org.junit.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BaseJunit {
public Logger LOGGER = LoggerFactory.getLogger(BaseJunit.class);
@Before
public void before() {
LOGGER.info("before");
}
}
import java.math.BigDecimal;
/**
* Created by shiqiang on 2018/1/11.
*/
public class BigDecimalUtilDemo{
public static BigDecimal add(Integer var1, Integer var2) {
return add(BigDecimalUtilDemoBase.getBigDecimal(var1), BigDecimalUtilDemoBase.getBigDecimal(var2));
}
public static BigDecimal add(Long var1, Long var2) {
return add(BigDecimalUtilDemoBase.getBigDecimal(var1), BigDecimalUtilDemoBase.getBigDecimal(var2));
}
public static BigDecimal add(Double var1, Double var2) {
return add(BigDecimalUtilDemoBase.getBigDecimal(var1), BigDecimalUtilDemoBase.getBigDecimal(var2));
}
public static BigDecimal add(Float var1, Float var2) {
return add(BigDecimalUtilDemoBase.getBigDecimal(var1), BigDecimalUtilDemoBase.getBigDecimal(var2));
}
public static BigDecimal add(Short var1, Short var2) {
return add(BigDecimalUtilDemoBase.getBigDecimal(var1), BigDecimalUtilDemoBase.getBigDecimal(var2));
}
public static BigDecimal add(Byte var1, Byte var2) {
return add(BigDecimalUtilDemoBase.getBigDecimal(var1), BigDecimalUtilDemoBase.getBigDecimal(var2));
}
public static BigDecimal add(Character var1, Character var2) {
return add(BigDecimalUtilDemoBase.getBigDecimal(var1), BigDecimalUtilDemoBase.getBigDecimal(var2));
}
public static BigDecimal add(String var1, String var2) {
return add(BigDecimalUtilDemoBase.getBigDecimal(var1), BigDecimalUtilDemoBase.getBigDecimal(var2));
}
/**
* 加法基层
* @param var1 BigDecimal
* @param var2 BigDecimal
* @return 和
*/
public static BigDecimal add(BigDecimal var1, BigDecimal var2) {
var1 = (var1 == null ? BigDecimalUtilDemoBase.BIGDECIMAL_ZERO : var1);
var2 = (var2 == null ? BigDecimalUtilDemoBase.BIGDECIMAL_ZERO : var2);
return var1.add(var2);
}
/**
* 减法, 行为参数化一个
* @param var1
* @param var2
* @param b
* @return
* 这是不适用于工具类,在这里不是很好(因为还需要自己实现操作)
*/
public static BigDecimal subtraction(Object var1, Object var2,BigDecimalUtilDemoBase.BigDecimalSub b) {
return b.sub(var1, var2);
}
/**
* ladmba 表达式进行行为参数化 函数式处理
* 这是不适用于工具类,在这里不是很好,(因为还要自己实现操作)
*/
public static BigDecimalUtilDemoBase.
BigdecimalOperation<BigDecimal, BigDecimal, BigDecimal> multi =
(BigDecimal var1, BigDecimal var2) -> var1.multiply(var2);
}
import java.math.BigDecimal;
/**
* Created by shiqiang on 2018/1/11.
*/
public abstract class BigDecimalUtilDemoBase {
public static final BigDecimal BIGDECIMAL_ZERO = new BigDecimal(0);
public static BigDecimal getBigDecimal(Integer var) {
return toBigDecimal(var);
}
public static BigDecimal getBigDecimal(Long var) {
return toBigDecimal(var);
}
public static BigDecimal getBigDecimal(Double var) {
return toBigDecimal(var);
}
public static BigDecimal getBigDecimal(Float var) {
return toBigDecimal(var);
}
public static BigDecimal getBigDecimal(Character var) {
return toBigDecimal(var);
}
public static BigDecimal getBigDecimal(Byte var) {
return toBigDecimal(var);
}
public static BigDecimal getBigDecimal(Short var) {
return toBigDecimal(var);
}
public static BigDecimal getBigDecimal(String var) {
BigDecimal var1 = null;
try {
var1 = (var == null? BIGDECIMAL_ZERO : new BigDecimal(var));
} catch (NumberFormatException e) {
System.err.println("请正确输入数字: " + e);
e.printStackTrace();
}
return var1;
}
public static BigDecimal toBigDecimal(Object var) {
return var == null? BIGDECIMAL_ZERO : new BigDecimal(String.valueOf(var));
}
interface BigDecimalSub {
BigDecimal sub (Object var1, Object var2);
}
@FunctionalInterface
interface BigdecimalOperation<F, R, T> {
T operation(F var1, R var2);
}
}
注:纯属练习玩而已!!!