package com.xxx.xx.xx.utils;
import java.math.BigDecimal;
public class BigDecimalUtils {
/**
* 加法运算
* @param m1
* @param m2
* @return
*/
public static double addDouble(double m1, double m2) {
BigDecimal p1 = new BigDecimal(Double.toString(m1));
BigDecimal p2 = new BigDecimal(Double.toString(m2));
return p1.add(p2).doubleValue();
}
/**
* 减法运算
* @param m1
* @param m2
* @return
*/
public static double subDouble(double m1, double m2) {
BigDecimal p1 = new BigDecimal(Double.toString(m1));
BigDecimal p2 = new BigDecimal(Double.toString(m2));
return p1.subtract(p2).doubleValue();
}
/**
* 乘法运算
* @param m1
* @param m2
* @return
*/
public static double mul(double m1, double m2) {
BigDecimal p1 = new BigDecimal(Double.toString(m1));
BigDecimal p2 = new BigDecimal(Double.toString(m2));
return p1.multiply(p2).doubleValue();
}
/**
* 除法运算
* @param m1
* @param m2
* @param scale
* @return
*/
public static double div(double m1, double m2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("Parameter error");
}
if (m2==0){
return 0.00;
}
BigDecimal p1 = new BigDecimal(Double.toString(m1));
BigDecimal p2 = new BigDecimal(Double.toString(m2));
return p1.divide(p2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
//相除保留两位小数点
public static BigDecimal divide(int a, int b) {
if (a==0 || b==0) {
return new BigDecimal(0.00);
} else {
return new BigDecimal((float) a / (float) b).setScale(2, BigDecimal.ROUND_HALF_UP);
}
}
//相除保留四位小数点
public static BigDecimal divide4(BigDecimal a, BigDecimal b) {
if (a.compareTo(BigDecimal.ZERO)==0 || b.compareTo(BigDecimal.ZERO)==0) {
return new BigDecimal(0.00);
} else {
return a.divide(b, 4, RoundingMode.HALF_UP);
}
}
public static BigDecimal divide(BigDecimal a, BigDecimal b) {
if (a.compareTo(BigDecimal.ZERO)==0 || b.compareTo(BigDecimal.ZERO)==0) {
return new BigDecimal(0.00);
} else {
return a.divide(b, 2, RoundingMode.HALF_UP);
}
}
public static BigDecimal divide(BigDecimal a, int b) {
if (a.compareTo(BigDecimal.ZERO)==0 || b==0) {
return new BigDecimal(0.00);
} else {
return a.divide(BigDecimal.valueOf((long) b), 2, RoundingMode.HALF_UP);
}
}
public static Double divide(int v1, int v2, int v3) {
if (v1 > 0 && v2 > 0) {
return new BigDecimal((float) v1 / v2 * v3).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
} else {
return 0.0;
}
}
public static BigDecimal getBigDecimalVal(Object str) {
if (StringUtils.isNotBlank((CharSequence) str)) {
return new BigDecimal((String) str);
} else {
return new BigDecimal(0.00);
}
}
//获取百分比
public static String getPercent(BigDecimal a, BigDecimal b){
if(a.compareTo(BigDecimal.ZERO)==0 || b.compareTo(BigDecimal.ZERO)==0){
return "0%";
}else{
return a.multiply(new BigDecimal(100)).divide(b, 2, RoundingMode.HALF_UP)+"%";
}
}
public static String getPercent(int a, int b){
if(a==0 || b==0){
return "0%";
}else{
return new BigDecimal((float) a / (float) b * 100).setScale(2, BigDecimal.ROUND_HALF_UP)+"%";
}
}
}