zhubaomin
2025-04-07 1a2b07f01ba4616fd9e894dddf474b56d020158c
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/NumUtil.java
New file
@@ -0,0 +1,246 @@
package com.dy.common.util;
@SuppressWarnings("unused")
public class NumUtil {
   /**
    * 判断是否是正整数
    * @param str String
    * @return boolean
    */
   public static boolean isPlusIntNumber(String str) {
      if(str == null || str.trim().equals("")){
         return false ;
      }
      int n = 0 ;
      String token = "9876543210";
      for (int i = n; i < str.length(); i++) {
         if (!token.contains(str.substring(i, i + 1))) {
            return false;
         }
      }
      return true;
   }
   /**
    * 判断是否是整数
    *
    * @param str String
    * @return boolean
    */
   public static boolean isIntNumber(String str) {
      // 判断是否是数字
      if(str == null || str.trim().equals(""))
         return false ;
      if(str.startsWith("-")){
         str = str.substring(1) ;
      }
      String token = "9876543210" ;
      for (int i = 0; i < str.length(); i++) {
         if (!token.contains(str.substring(i, i + 1))) {
            return false;
         }
      }
      return true;
   }
   /**
    * 判断是否是整数
    *
    * @param str String
    * @return boolean
    */
   public static boolean isHex(String str) {
      // 判断是否是数字
      if(str == null || str.trim().equals(""))
         return false ;
      if(str.length()%2 != 0)
         return false ;
      String token = "9876543210abcdefABCDEF" ;
      for (int i = 0; i < str.length(); i++) {
         if (!token.contains(str.substring(i, i + 1))) {
            return false;
         }
      }
      return true;
   }
   /**
    * 判断是否是浮点数
    * @param str String
    * @return boolean
    */
   public static boolean isDoubleNumber(String str) {
      // 判断是否是数字
      if(str == null || str.trim().equals("")){
         return false ;
      }
      String token = "9876543210.-" ;
      for (int i = 0; i < str.length(); i++) {
         if (!token.contains(str.substring(i, i + 1))) {
            return false;
         }
      }
      if(str.startsWith(".") || str.endsWith(".")){
         return false ;
      }else{
         if(str.indexOf('.') != str.lastIndexOf('.')){
            return false ;
         }
      }
      if(str.startsWith("-")){
         return str.indexOf('-') == str.lastIndexOf('-');
      }
      return true;
   }
   /**
    * 判断是否是正浮点数
    * @param str String
    * @return boolean
    */
   public static boolean isPlusDoubleNumber(String str) {
      // 判断是否是数字
      if(str == null || str.trim().equals("")){
         return false ;
      }
      String token = "9876543210." ;
      for (int i = 0; i < str.length(); i++) {
         if (!token.contains(str.substring(i, i + 1))) {
            return false;
         }
      }
      if(str.startsWith(".") || str.endsWith(".")){
         return false ;
      }else{
         if(str.indexOf('.') != str.lastIndexOf('.')){
            return false ;
         }
      }
      if(str.startsWith("-")){
         return str.indexOf('-') == str.lastIndexOf('-');
      }
      return true;
   }
   /**
    * 浮点数四舍五入
    * @param d 浮点数据
    * @param scale 小数位数
    * @return 四舍五入后的浮点数
    */
   public static Double roundDouble(Double d , int scale){
      if(d == null){
         return null ;
      }
      return Double.valueOf(new java.text.DecimalFormat("##." + "0".repeat(Math.max(0, scale))).format(d)) ;
   }
   /**
    * 浮点数四舍五入
    * @param d 浮点数据
    * @param scale 小数位数
    * @return 四舍五入后的浮点数
    */
   public static String roundDoubleStr(Double d , int scale){
      if(d == null){
         return null ;
      }
      return new java.text.DecimalFormat("#0." + "0".repeat(Math.max(0, scale))).format(d);
   }
   /**
    * 浮点数四舍五入
    * @param d 浮点数据
    * @param scale 小数位数
    * @return 四舍五入后的浮点数
    */
   public static Float roundFloat(Float d , int scale){
      if(d == null){
         return null ;
      }
      // StringBuilder temp = new StringBuilder(".");
      // temp.append("0".repeat(Math.max(0, scale)));
      // return Float.valueOf(new java.text.DecimalFormat(temp.toString()).format(d)) ;
      return Float.valueOf(new java.text.DecimalFormat("." + "0".repeat(Math.max(0, scale))).format(d)) ;
   }
   /**
    * 浮点数四舍五入
    * @param d 浮点数据
    * @return 四舍五入后的浮点数
    */
   public static Float roundFloat(Float d){
      if(d == null){
         return null ;
      }
      return Float.valueOf(new java.text.DecimalFormat(".00").format(d)) ;
   }
   /**
    * 冒泡排序,
    * @param values 要排序的数组
    * @param up true 从小到大  false 从大到小
    * @return 排序后的数组
    */
   public static int[] sort(int[] values , boolean up){
      boolean changed;
      int temp;
      int end = 0 ;
      for (int i = 0; i < values.length; ++i) {
         changed = false ;
         end++ ;
         for (int j = 0; j < values.length - end ; ++j) {
            if(up){
               if (values[j] > values[j + 1]) {
                  temp = values[j];
                  values[j] = values[j + 1];
                  values[j + 1] = temp;
                  changed = true ;
               }
            }else{
               if (values[j] < values[j + 1]) {
                  temp = values[j];
                  values[j] = values[j + 1];
                  values[j + 1] = temp;
                  changed = true ;
               }
            }
         }
         if(!changed){
            break ;
         }
      }
      return values ;
   }
   /**
    * 把数据前面的0去掉
    *
    * @param s String
    * @return String
    */
   public String clean0FromStrNum(String s) {
      while (s.charAt(0) == '0' && s.length() > 1) {
         s = s.substring(1);
      }
      return s;
   }
   /**
    * 去掉小数点
    *
    * @param value String
    * @return String
    */
   public String cleanDotNumber(String value) {
      int dot = value.indexOf('.');
      if (dot < 0) {
         return value;
      }
      if (value.length() - dot - 1 > 2) {
         value = value.substring(0, dot);
      }
      return value;
   }
}