xucaiqin 2 лет назад
Родитель
Сommit
b8ba02b6c7

+ 24 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/utils/DecimalUtils.java

@@ -1,6 +1,8 @@
 package com.sckw.payment.utils;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.DecimalFormat;
 import java.util.Objects;
 
 /**
@@ -8,10 +10,28 @@ import java.util.Objects;
  * @date 2023-07-31 15:25:57
  */
 public class DecimalUtils {
-    public static BigDecimal add(BigDecimal one,BigDecimal two){
-        if(Objects.isNull(one)&&Objects.isNull(two)){
-            return null;
+    private final static DecimalFormat df = new DecimalFormat("0.####");
+
+    /**
+     * @param dividend 被除数
+     * @param divisor  除数
+     * @return 百分比数据
+     */
+    public static String percent(BigDecimal dividend, BigDecimal divisor) {
+        if (Objects.isNull(dividend)) {
+            dividend = new BigDecimal("0.00");
+        }
+        //除数为0
+        if (Objects.isNull(divisor)) {
+            divisor = new BigDecimal("0.00");
+        }
+
+        if (BigDecimal.ZERO.compareTo(dividend) != 0 && BigDecimal.ZERO.compareTo(divisor) == 0) {
+            return "100.00%";
+        }
+        if (BigDecimal.ZERO.compareTo(dividend) == 0 && BigDecimal.ZERO.compareTo(divisor) == 0) {
+            return "0.00%";
         }
-        return null;
+        return df.format(dividend.divide(divisor, 6, RoundingMode.HALF_UP).multiply(new BigDecimal("100.0")).abs()) + "%";
     }
 }