zoukankan      html  css  js  c++  java
  • 金额 千分位分隔 指定小数位数

     //////////////////数字千分符 
    function rendererZhMoney(v,l) {  
                if(isNaN(v)){  
                    return v;
                    //v=0;  
                }  
                
                if(l == undefined) l = 2;
                //v = (Math.round((v - 0) * 1000)) / 1000;
                 v = (Math.round((v - 0) * Math.pow(10,l))) / Math.pow(10,l);   
               //v = (v == Math.floor(v)) ? v + ".000" : ((v * 10 == Math.floor(v * 10)) ? v  
               //         + "00" : (v * 100 == Math.floor(v * 100)) ? v  
               //         + "0" : v); 
               v = addZero(v,l);
                v = String(v);  
                var ps = v.split('.');  
                var whole = ps[0];  
               // var sub = ps[1] ? '.' + ps[1] : '.000';
                 var sub = ps[1] ? '.' + ps[1] : addZero2(l);    
                var r = /(d+)(d{3})/;  
                while (r.test(whole)) {  
    //                whole = whole.replace(r, '$1' + ',' + '$2',+'$3','$4','$5','$6');  
                    whole = whole.replace(r, '$1' + ',' + '$2'); 
                }  
                v = whole + sub;  
                  
                return v;  
            }
            
    function addZero(v,l){
        for(var i=0;i<l;i++){
            if(v * Math.pow(10,i) == Math.floor(v * Math.pow(10,i))){
                if(i==0) v=v+".";
                for(var j=0;j<l-i;j++){
                    v = v + "0";
                }
                return v;
            }
        }
        return v;
    }
    
    function addZero2(l){
        var s=".";
        for(var i=0;i<l;i++){
            s= s+"0";
        }
        return s;
    }
        
             
    Ext.ux.NuberFiledFormat=Ext.extend(Ext.form.NumberField, {   
              baseChars: "0123456789,",   
                setValue: function(v){   
               v = typeof v == 'number' ? v : String(v).replace(this.decimalSeparator, ".").replace(/,/g, "");   
                v = isNaN(v) ? '' : rendererZhMoney(v);   
                  
               //Ext.util.Format.number(this.fixPrecision(String(v)), "0,000,000.00");此为ext 4.0    
                   this.setRawValue(v);   
                 return Ext.form.NumberField.superclass.setValue.call(this, v);   
            },   
             /* getValue:function(){  
                //alert((String(Ext.form.NumberField.superclass.getValue.call(this)).replace(",","")));  
                return (String(Ext.form.NumberField.superclass.getValue.call(this)).replace(",",""));  
              },  
               */  
              fixPrecision: function(value){   
                var nan = isNaN(value);   
                if (!this.allowDecimals || this.decimalPrecision == -1 || nan || !value) {   
                    return nan ? '' : value;   
                }   
                return parseFloat(value).toFixed(this.decimalPrecision);   
            },   
            validateValue: function(value){   
                if (!Ext.form.NumberField.superclass.validateValue.call(this, value)) {   
                    return false;   
                }   
                if (value.length < 1) { // if it's blank and textfield didn't flag it then it's valid   
                    return true;   
                }   
                value = String(value).replace(this.decimalSeparator, ".").replace(/,/g, "");   
                if (isNaN(value)) {   
                    this.markInvalid(String.format(this.nanText, value));   
                    return false;   
                }   
                var num = this.parseValue(value);   
                if (num < this.minValue) {   
                    this.markInvalid(String.format(this.minText, this.minValue));   
                    return false;   
                }   
                if (num > this.maxValue) {   
                    this.markInvalid(String.format(this.maxText, this.maxValue));   
                    return false;   
                }   
                return true;   
            },   
            parseValue: function(value){   
                value = parseFloat(String(value).replace(this.decimalSeparator, ".").replace(/,/g, ""));   
                return isNaN(value) ? '' : value;   
            }   
           }); 
  • 相关阅读:
    滚动计算基础知识
    Javascript继承
    提取URL字符串的搜索字符串中的参数
    C++编程练习(13)----“排序算法 之 堆排序“
    常见网络端口 和 常见网络协议
    TCP协议中的三次握手和四次挥手(图解)
    C++编程练习(14)-------“单例模式”的实现
    编程练习------C/C++分别实现字符串与整数的转换
    IPv4地址学习总结
    C/C++中的联合体
  • 原文地址:https://www.cnblogs.com/mingforyou/p/3344532.html
Copyright © 2011-2022 走看看