`

java中关于千分位(来自网络)

 
阅读更多
java中对于字符串(正负数字)进行展示的时候,展示成千分位格式和保留小数位。

解决的方法有两种,一种是后台java进行处理,另一种是前台js处理。

第1种方法:工具类(只适合不带正负号的数字的字符串),此方法是保留两位小数位,整数位是千分位格式
//千分位方法
     public static String fmtMicrometer(String text) 
     { 
         DecimalFormat df = null; 
         if(text.indexOf(".") > 0) 
         { 
             if(text.length() - text.indexOf(".")-1 == 0) 
             { 
                 df = new DecimalFormat("###,##0."); 
             }else if(text.length() - text.indexOf(".")-1 == 1) 
             { 
                 df = new DecimalFormat("###,##0.0"); 
             }else 
             { 
                 df = new DecimalFormat("###,##0.00"); 
             } 
         }else  
         { 
             df = new DecimalFormat("###,##0"); 
         } 
         double number = 0.0; 
         try { 
              number = Double.parseDouble(text); 
         } catch (Exception e) { 
             number = 0.0; 
         } 
         return df.format(number); 
     }

如果带正负号如String s = -38475000.9098
if(s.startsWith("-")){
                             String s=this.fmtMicrometer(strResults.substring(1, strResults.length()));
                             System.out.println(s);
                         }

//得到的结果就是-38,475,000.90

第2种方法:前台js处理
可能会稍微复杂点,因为他没有专门的类对其进行处理,全靠硬拼。我这边有easyui页面展示时对数据的处理方法,大家可以借鉴,也可以剥离出来。我这边就不整理了(我比较讨厌前台处理)。

function formatDiff(s, rowData, rowIndex){
     //n = n>0 && n<=20 ? n : 2;
     var n=2;
     s = parseFloat((s+"").replace(/[^\d\.-]/g,"")).toFixed(n)+"";
     var l = s.split(".")[0].split("").reverse(),
    r = s.split(".")[1];
    t = "";
     for(i = 0;i<l.length;i++){
         t+=l[i]+((i+1)%3==0 && (i+1) != l.length ? "," : "");
    }
     var v= t.split("").reverse().join("")+"."+r;
     if(v.match("-,")){
         return v.replace("-,","-");
     }else{
         return v;  
     }
};
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics