package main;
import java.math.BigDecimal;
/**
*/
public class BigDecimalUtil {
/**
* 加法<br/>
*/
public static Double
add(Double... d) {
BigDecimal result = BigDecimal.ZERO;
if (d !=
null) {
for (Double dd : d) {
if (dd !=
null) {
result = result.add(parseDouble(dd));
}
}
}
return formatReturnDouble2(result);
}
/**
* 减<br/>
*/
public static Double
subtract(Double... d) {
BigDecimal result = BigDecimal.ZERO;
boolean first =
true;
if (d !=
null) {
for (Double dd : d) {
if (dd !=
null) {
if (first) {
first =
false;
result = parseDouble(dd);
}
else {
result = result.subtract(parseDouble(dd));
}
}
}
}
return formatReturnDouble2(result);
}
/**
* 乘法<br/>
*/
public static Double
multiply(Double... d) {
return multiplyReturnBigDecimal(d).doubleValue();
}
/**
* 乘法,返回BigDecimal<br/>
*/
public static BigDecimal
multiplyReturnBigDecimal(Double... d) {
BigDecimal result = BigDecimal.ONE;
if (d !=
null) {
for (Double dd : d) {
if (dd !=
null) {
result = result.multiply(parseDouble(dd));
}
}
}
else {
result = BigDecimal.ZERO;
}
return result;
}
/**
* 除法,参数BigDecimal<br/>
*/
public static Double
divide(BigDecimal b, Double d) {
return divideBigDecimalReturnBigDecimal(b, d).doubleValue();
}
/**
* 除法,参数BigDecimal<br/>
*/
public static BigDecimal
divideBigDecimalReturnBigDecimal(BigDecimal b, Double d) {
if (d ==
null || d ==
0d) {
return BigDecimal.ZERO;
}
if (b ==
null) {
return BigDecimal.ZERO;
}
return b.divide(parseDouble(d),
2, BigDecimal.ROUND_DOWN);
}
/**
* 除<br/>
*/
public static Double
divide(Double... d) {
BigDecimal result = BigDecimal.ZERO;
boolean first =
true;
if (d !=
null) {
for (Double dd : d) {
if (dd !=
null) {
if (first) {
first =
false;
result = parseDouble(dd);
}
else {
if (dd !=
0d) {
result = result.divide(parseDouble(dd),
2, BigDecimal.ROUND_DOWN);
}
else {
result = BigDecimal.ZERO;
}
}
}
}
}
return result.doubleValue();
}
/**
* 保留scale位小数<br/>
*/
public static Double
formatReturnDouble(BigDecimal big,
int scale) {
return formatReturnBigDecimal(big, scale).doubleValue();
}
/**
* 保留2位小数<br/>
*/
public static Double
formatReturnDouble2(BigDecimal big) {
return formatReturnBigDecimal(big,
2).doubleValue();
}
/**
* 保留scale位小数<br/>
*/
public static Double
formatReturnDouble(Double d,
int scale) {
return formatReturnDouble(parseDouble(d), scale);
}
/**
* 保留2位小数<br/>
*/
public static Double
formatReturnDouble2(Double d) {
return formatReturnDouble(parseDouble(d),
2);
}
/**
* 保留scale位小数<br/>
*/
public static BigDecimal
formatReturnBigDecimal(BigDecimal big,
int scale) {
if (big ==
null) {
return BigDecimal.ZERO.setScale(scale, BigDecimal.ROUND_DOWN);
}
return big.setScale(scale, BigDecimal.ROUND_DOWN);
}
/**
* 保留2位小数<br/>
*/
public static BigDecimal
formatReturnBigDecimal2(BigDecimal big) {
return formatReturnBigDecimal(big,
2);
}
/**
* 保留scale位小数<br/>
*/
public static BigDecimal
formatReturnBigDecimal(Double d,
int scale) {
return formatReturnBigDecimal(parseDouble(d), scale);
}
/**
* 保留2位小数<br/>
*/
public static BigDecimal
formatReturnBigDecimal2(Double d) {
return formatReturnBigDecimal(parseDouble(d),
2);
}
/**
* 将double转化为bigDecimal<br/>
*/
public static BigDecimal
parseDouble(Double d) {
if (d ==
null) {
return BigDecimal.ZERO;
}
return new BigDecimal(Double.toString(d));
}
}