|
@@ -12,12 +12,65 @@ import java.math.RoundingMode;
|
|
public class BigDecimalUtils {
|
|
public class BigDecimalUtils {
|
|
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 转换BigDecimal,如value==null,直接返回null
|
|
|
|
+ * @author Andy
|
|
|
|
+ * @date 17:20 2021/9/9
|
|
|
|
+ * @param value:
|
|
|
|
+ * @return java.math.BigDecimal
|
|
|
|
+ **/
|
|
|
|
+ public static BigDecimal convert(Object value){
|
|
|
|
+ if (value == null) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ if (value instanceof BigDecimal) {
|
|
|
|
+ return (BigDecimal) value;
|
|
|
|
+ }
|
|
|
|
+ return new BigDecimal(value.toString());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 转换BigDecimal,如value==null,返回初始值0
|
|
|
|
+ * @author Andy
|
|
|
|
+ * @date 17:21 2021/9/9
|
|
|
|
+ * @param value:
|
|
|
|
+ * @return java.math.BigDecimal
|
|
|
|
+ **/
|
|
|
|
+ public static BigDecimal convertDefault(Object value){
|
|
|
|
+ if (value == null) {
|
|
|
|
+ return new BigDecimal("0");
|
|
|
|
+ }
|
|
|
|
+ if (value instanceof BigDecimal) {
|
|
|
|
+ return (BigDecimal) value;
|
|
|
|
+ }
|
|
|
|
+ return new BigDecimal(value.toString());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 百分比计算,不进行四舍五入
|
|
|
|
+ * @author Andy
|
|
|
|
+ * @date 17:00 2021/9/9
|
|
|
|
+ * @param value:
|
|
|
|
+ * @param value2:
|
|
|
|
+ * @param scale:
|
|
|
|
+ * @return java.lang.String
|
|
|
|
+ **/
|
|
public static String percentDivideDown(Object value, Object value2, int scale){
|
|
public static String percentDivideDown(Object value, Object value2, int scale){
|
|
- return divideDown(value, value2, scale).multiply(new BigDecimal("100")).stripTrailingZeros().toPlainString() + "%";
|
|
|
|
|
|
+ return divideDown(value, value2, scale).multiply(convert("100")).stripTrailingZeros().toPlainString() + "%";
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 百分比计算,进行四舍五入
|
|
|
|
+ * @author Andy
|
|
|
|
+ * @date 17:01 2021/9/9
|
|
|
|
+ * @param value:
|
|
|
|
+ * @param value2:
|
|
|
|
+ * @param scale:
|
|
|
|
+ * @return java.lang.String
|
|
|
|
+ **/
|
|
public static String percentDivide(Object value, Object value2, int scale){
|
|
public static String percentDivide(Object value, Object value2, int scale){
|
|
- return divide(value, value2, scale).multiply(new BigDecimal("100")).stripTrailingZeros().toPlainString() + "%";
|
|
|
|
|
|
+ return divide(value, value2, scale).multiply(convert("100")).stripTrailingZeros().toPlainString() + "%";
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -28,7 +81,7 @@ public class BigDecimalUtils {
|
|
* @return java.math.BigDecimal
|
|
* @return java.math.BigDecimal
|
|
**/
|
|
**/
|
|
public static BigDecimal divideDown(Object value, Object value2, int scale){
|
|
public static BigDecimal divideDown(Object value, Object value2, int scale){
|
|
- return new BigDecimal(value.toString()).divide(new BigDecimal(value2.toString()), scale, RoundingMode.DOWN);
|
|
|
|
|
|
+ return convertDefault(value).divide(convertDefault(value2), scale, RoundingMode.DOWN);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -39,7 +92,7 @@ public class BigDecimalUtils {
|
|
* @return java.math.BigDecimal
|
|
* @return java.math.BigDecimal
|
|
**/
|
|
**/
|
|
public static BigDecimal divide(Object value, Object value2, int scale){
|
|
public static BigDecimal divide(Object value, Object value2, int scale){
|
|
- return new BigDecimal(value.toString()).divide(new BigDecimal(value2.toString()), scale, RoundingMode.HALF_UP);
|
|
|
|
|
|
+ return convertDefault(value).divide(convertDefault(value2), scale, RoundingMode.HALF_UP);
|
|
}
|
|
}
|
|
|
|
|
|
public static double divideToDouble(Object value, Object value2, int scale){
|
|
public static double divideToDouble(Object value, Object value2, int scale){
|
|
@@ -47,7 +100,7 @@ public class BigDecimalUtils {
|
|
}
|
|
}
|
|
|
|
|
|
public static BigDecimal setScale(Object value, int scale){
|
|
public static BigDecimal setScale(Object value, int scale){
|
|
- return new BigDecimal(value.toString()).setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
+ return convertDefault(value).setScale(scale, BigDecimal.ROUND_HALF_UP);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -63,7 +116,7 @@ public class BigDecimalUtils {
|
|
* @return java.math.BigDecimal
|
|
* @return java.math.BigDecimal
|
|
**/
|
|
**/
|
|
public static BigDecimal multiply(Object value, Object value2){
|
|
public static BigDecimal multiply(Object value, Object value2){
|
|
- return multiply(new BigDecimal(value.toString()), new BigDecimal(value2.toString()), 2);
|
|
|
|
|
|
+ return multiply(convertDefault(value), convertDefault(value2), 2);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -75,7 +128,7 @@ public class BigDecimalUtils {
|
|
* @return java.math.BigDecimal
|
|
* @return java.math.BigDecimal
|
|
**/
|
|
**/
|
|
public static BigDecimal subtract(Object value, Object value2){
|
|
public static BigDecimal subtract(Object value, Object value2){
|
|
- return subtract(new BigDecimal(value.toString()), new BigDecimal(value2.toString()));
|
|
|
|
|
|
+ return subtract(convert(value), convert(value2));
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -107,7 +160,7 @@ public class BigDecimalUtils {
|
|
* @return java.math.BigDecimal
|
|
* @return java.math.BigDecimal
|
|
**/
|
|
**/
|
|
public static BigDecimal add(Object value, Object value2){
|
|
public static BigDecimal add(Object value, Object value2){
|
|
- return new BigDecimal(value.toString()).add(new BigDecimal(value2.toString()));
|
|
|
|
|
|
+ return convertDefault(value).add(convertDefault(value2));
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -125,7 +178,71 @@ public class BigDecimalUtils {
|
|
if (value == null || value2 == null) {
|
|
if (value == null || value2 == null) {
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
- return new BigDecimal(value.toString()).compareTo(new BigDecimal(value2.toString())) == 0;
|
|
|
|
|
|
+ return convert(value).compareTo(convert(value2)) == 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 大于等于
|
|
|
|
+ * @author Andy
|
|
|
|
+ * @date 17:04 2021/9/9
|
|
|
|
+ * @param value:
|
|
|
|
+ * @param value2:
|
|
|
|
+ * @return boolean
|
|
|
|
+ **/
|
|
|
|
+ public static boolean gte(Object value, Object value2) {
|
|
|
|
+ if (value == null || value2 == null) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ return convert(value).compareTo(convert(value2)) > -1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 大于
|
|
|
|
+ * @author Andy
|
|
|
|
+ * @date 17:04 2021/9/9
|
|
|
|
+ * @param value:
|
|
|
|
+ * @param value2:
|
|
|
|
+ * @return boolean
|
|
|
|
+ **/
|
|
|
|
+ public static boolean gt(Object value, Object value2) {
|
|
|
|
+ if (value == null || value2 == null) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ return convert(value).compareTo(convert(value2)) == 1;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 小于等于
|
|
|
|
+ * @author Andy
|
|
|
|
+ * @date 17:04 2021/9/9
|
|
|
|
+ * @param value:
|
|
|
|
+ * @param value2:
|
|
|
|
+ * @return boolean
|
|
|
|
+ **/
|
|
|
|
+ public static boolean lte(Object value, Object value2) {
|
|
|
|
+ if (value == null || value2 == null) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ return convert(value).compareTo(convert(value2)) < 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 小于
|
|
|
|
+ * @author Andy
|
|
|
|
+ * @date 17:04 2021/9/9
|
|
|
|
+ * @param value:
|
|
|
|
+ * @param value2:
|
|
|
|
+ * @return boolean
|
|
|
|
+ **/
|
|
|
|
+ public static boolean lt(Object value, Object value2) {
|
|
|
|
+ if (value == null || value2 == null) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ return convert(value).compareTo(convert(value2)) == -1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ System.out.println(new BigDecimal("12.150"));
|
|
|
|
+ System.out.println(convert(12.150 + ""));
|
|
|
|
+ }
|
|
}
|
|
}
|