JAVA—咖啡館

          ——?dú)g迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗(yàn),分享JAVA帶來的快樂!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問題請與我聯(lián)系。

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks
            1public class NumberHelper {   
            2  
            3    private static Log logger = LogFactory.getLog(NumberHelper.class);   
            4       
            5    /**  
            6     * 將源數(shù)字格式化為指定的長度,不足的位數(shù)在前面補(bǔ)零,如果長度小于源數(shù)字的長度返回原始數(shù)字  
            7     * 適用于在產(chǎn)生指定長度的流水號時使用  
            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("源數(shù)字或指定長度非法", e);   
           22            e.printStackTrace();   
           23            return null;   
           24        }
             
           25    }
             
           26       
           27    /**  
           28     * 將百分比格式化為數(shù)字表示,默認(rèn)使用四舍五入的算法不舍去小數(shù)位數(shù)  
           29     *   
           30     * @param source 百分比格式的數(shù)字  
           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("將百分比格式化為數(shù)字表示出現(xiàn)錯誤", e);   
           39            e.printStackTrace();   
           40            return null;   
           41        }
             
           42    }
             
           43       
           44    /**  
           45     * 將百分比格式化為數(shù)字表示,默認(rèn)使用四舍五入的算法并保留指定位數(shù)的小數(shù)  
           46     *   
           47     * @param source 百分比格式的數(shù)字  
           48     * @param length 小數(shù)位數(shù)  
           49     * @return  
           50     */
            
           51    public static double 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("將百分比格式化為數(shù)字表示出現(xiàn)錯誤", e);   
           57            e.printStackTrace();   
           58            return 0;   
           59        }
             
           60    }
             
           61       
           62    /**  
           63     * 將兩個數(shù)字相除并返回百分格式  
           64     *   
           65     * @param dividend 被除數(shù)  
           66     * @param divisor 除數(shù)  
           67     * @return 帶%號的字符串  
           68     */
            
           69    public static String divide2Percent(int dividend, int divisor){   
           70        return number2percent(divide(dividend, divisor));   
           71    }
             
           72       
           73    /**  
           74     * 將數(shù)字格式化為百分比表示  
           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("將數(shù)字格式化為百分比表示出現(xiàn)錯誤", e);   
           85            e.printStackTrace();   
           86            return null;   
           87        }
             
           88    }
             
           89       
           90    /**  
           91     * 兩個整數(shù)相除保留兩位小數(shù)  
           92     *   
           93     * @param dividend 被除數(shù)  
           94     * @param divisor 除數(shù)  
           95     * @return  
           96     */
            
           97    public static Double divide(int dividend, int divisor){   
           98        return divide(dividend, divisor, 2);   
           99    }
             
          100       
          101    /**  
          102     * 兩個整數(shù)相除保留指定位數(shù)的小數(shù)  
          103     *   
          104     * @param dividend 被除數(shù)  
          105     * @param divisor 除數(shù)  
          106     * @param length 保留小數(shù)位數(shù)的長度  
          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("數(shù)字相除發(fā)生錯誤", e);   
          119            e.printStackTrace();   
          120            return null;   
          121        }
             
          122    }
             
          123  
          124    /**  
          125     * 將double數(shù)據(jù)保留指定位數(shù)的小數(shù)  
          126     * @param length 保留小數(shù)位數(shù)的長度  
          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("保留指定位數(shù)的小數(shù)發(fā)生錯誤", e);   
          139            e.printStackTrace();   
          140            return null;   
          141        }
             
          142    }
             
          143       
          144    /**  
          145     * 將double數(shù)據(jù)保留指定位數(shù)的小數(shù)  
          146     * @param length 保留小數(shù)位數(shù)的長度,小數(shù)位數(shù)不夠,以0補(bǔ)全。  
          147     * 支持科學(xué)計(jì)算法  
          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數(shù)據(jù)保留指定位數(shù)的小數(shù)  
          157     * @param length 保留小數(shù)位數(shù)的長度,小數(shù)位數(shù)不夠,以0補(bǔ)全。  
          158     * 支持科學(xué)計(jì)算法  
          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 static void main(String[] args){   
          168        System.out.print(divideToString("1.23E4",5));   
          169    }
             
          170}
            
          171
          posted on 2010-06-21 10:11 rogerfan 閱讀(289) 評論(0)  編輯  收藏 所屬分類: 【Java知識】
          主站蜘蛛池模板: 扎赉特旗| 涿鹿县| 原平市| 钟山县| 明光市| 久治县| 宽甸| 安龙县| 綦江县| 西宁市| 宁蒗| 嫩江县| 茌平县| 柳江县| 象山县| 利辛县| 锡林郭勒盟| 车致| 旬邑县| 鄂州市| 兴国县| 陵水| 泸溪县| 红安县| 庄浪县| 荣昌县| 云林县| 宁陕县| 庆元县| 嵊泗县| 西盟| 澜沧| 姜堰市| 申扎县| 诸暨市| 武义县| 兖州市| 犍为县| 尼玛县| 东安县| 裕民县|