数组操作助手类

来源:互联网 发布:mac版本ps免费版下载 编辑:程序博客网 时间:2024/05/21 09:16
  1. public class NumberHelper { 
  2.  
  3.     private static Log logger = LogFactory.getLog(NumberHelper.class); 
  4.      
  5.     /**
  6.      * 将源数字格式化为指定的长度,不足的位数在前面补零,如果长度小于源数字的长度返回原始数字
  7.      * 适用于在产生指定长度的流水号时使用
  8.      *
  9.      * @param source
  10.      * @return
  11.      */ 
  12.     public static String number2char(int source,int length) { 
  13.         try
  14.             String module = new String(); 
  15.             for (int i=0; i<length; i++){ 
  16.                 module += "0"
  17.             } 
  18.             DecimalFormat format = new DecimalFormat(module); 
  19.             return format.format(source); 
  20.         } catch (Exception e){ 
  21.             logger.error("源数字或指定长度非法", e); 
  22.             e.printStackTrace(); 
  23.             return null
  24.         } 
  25.     } 
  26.      
  27.     /**
  28.      * 将百分比格式化为数字表示,默认使用四舍五入的算法不舍去小数位数
  29.      *
  30.      * @param source 百分比格式的数字
  31.      * @return
  32.      */ 
  33.     public static Double percent2number(double source){ 
  34.         try
  35.             BigDecimal big = new BigDecimal(source); 
  36.             return big.divide(new BigDecimal(100)).doubleValue(); 
  37.         } catch (Exception e){ 
  38.             logger.error("将百分比格式化为数字表示出现错误", e); 
  39.             e.printStackTrace(); 
  40.             return null
  41.         } 
  42.     } 
  43.      
  44.     /**
  45.      * 将百分比格式化为数字表示,默认使用四舍五入的算法并保留指定位数的小数
  46.      *
  47.      * @param source 百分比格式的数字
  48.      * @param length 小数位数
  49.      * @return
  50.      */ 
  51.     public staticdouble percent2number(double source,int length){ 
  52.         try
  53.             BigDecimal big = new BigDecimal(source); 
  54.             return big.divide(new BigDecimal(100), length, RoundingMode.HALF_UP).doubleValue(); 
  55.         } catch (Exception e){ 
  56.             logger.error("将百分比格式化为数字表示出现错误", e); 
  57.             e.printStackTrace(); 
  58.             return 0
  59.         } 
  60.     } 
  61.      
  62.     /**
  63.      * 将两个数字相除并返回百分格式
  64.      *
  65.      * @param dividend 被除数
  66.      * @param divisor 除数
  67.      * @return 带%号的字符串
  68.      */ 
  69.     public static String divide2Percent(int dividend,int divisor){ 
  70.         return number2percent(divide(dividend, divisor)); 
  71.     } 
  72.      
  73.     /**
  74.      * 将数字格式化为百分比表示
  75.      *
  76.      * @param source
  77.      * @return
  78.      */ 
  79.     public static String number2percent(double source){ 
  80.         try
  81.             DecimalFormat format = new DecimalFormat("#.##%"); 
  82.             return format.format(source); 
  83.         } catch (Exception e){ 
  84.             logger.error("将数字格式化为百分比表示出现错误", e); 
  85.             e.printStackTrace(); 
  86.             return null
  87.         } 
  88.     } 
  89.      
  90.     /**
  91.      * 两个整数相除保留两位小数
  92.      *
  93.      * @param dividend 被除数
  94.      * @param divisor 除数
  95.      * @return
  96.      */ 
  97.     public static Double divide(int dividend,int divisor){ 
  98.         return divide(dividend, divisor,2); 
  99.     } 
  100.      
  101.     /**
  102.      * 两个整数相除保留指定位数的小数
  103.      *
  104.      * @param dividend 被除数
  105.      * @param divisor 除数
  106.      * @param length 保留小数位数的长度
  107.      * @return
  108.      */ 
  109.     public static Double divide(int dividend,int divisor, int length){ 
  110.         try
  111.             if (dividend ==0){ 
  112.                 return 0D; 
  113.             } 
  114.             BigDecimal big = new BigDecimal(divisor); 
  115.             double d = big.divide(new BigDecimal(dividend), length, RoundingMode.HALF_UP).doubleValue(); 
  116.             return d; 
  117.         } catch (Exception e){ 
  118.             logger.error("数字相除发生错误", e); 
  119.             e.printStackTrace(); 
  120.             return null
  121.         } 
  122.     } 
  123.  
  124.     /**
  125.      * 将double数据保留指定位数的小数
  126.      * @param length 保留小数位数的长度
  127.      * @return
  128.      */ 
  129.     public static Double divide(double source,int length){ 
  130.         try
  131.             if (source ==0){ 
  132.                 return 0D; 
  133.             } 
  134.             BigDecimal big = new BigDecimal(source); 
  135.             double d = big.setScale(length, RoundingMode.HALF_UP).doubleValue(); 
  136.             return d; 
  137.         } catch (Exception e){ 
  138.             logger.error("保留指定位数的小数发生错误", e); 
  139.             e.printStackTrace(); 
  140.             return null
  141.         } 
  142.     } 
  143.      
  144.     /**
  145.      * 将double数据保留指定位数的小数
  146.      * @param length 保留小数位数的长度,小数位数不够,以0补全。
  147.      * 支持科学计算法
  148.      * @return
  149.      */ 
  150.     public static String divideToString(double source,int length){ 
  151.         BigDecimal big = new BigDecimal(source); 
  152.         return  big.setScale(length, RoundingMode.HALF_UP).toString(); 
  153.     } 
  154.      
  155.     /**
  156.      * 将String数据保留指定位数的小数
  157.      * @param length 保留小数位数的长度,小数位数不够,以0补全。
  158.      * 支持科学计算法
  159.      * @return
  160.      */ 
  161.     public static String divideToString(String source,int length){ 
  162.         BigDecimal big = new BigDecimal(source); 
  163.         return  big.setScale(length, RoundingMode.HALF_UP).toString(); 
  164.     } 
  165.      
  166.      
  167.     public staticvoid main(String[] args){ 
  168.         System.out.print(divideToString("1.23E4",5)); 
  169.     } 
0 0
原创粉丝点击