大家帮我看看下面这段代码存在什么问题数字为整数时能正常显示,为小数时就不显示了,倒底哪里出问题,请教,谢谢!!!
function   NumToChin() 

    this.subdw   =   new   Array( "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"); 
    this.subdw2   =   new   Array( "分", "角"); 
    this.subup   =   [[ "0", "零"],[ "1", "壹"],[ "2", "贰"],[ "3", "叁"],[ "4", "肆"],[ "5", "伍"],[ "6", "陆"],[ "7", "柒"],[ "8", "捌"],[ "9", "玖"]]; 
    
    this.change   =   function(str) 
    { 
    var   str_return   =   " "; 
    var   lenstr   =   str.length; 
    for   (var   i   =   0;   i   <   lenstr;   i++) 
    { 
    var   ch   =   str.charCodeAt(i);//charAt 
    for   (var   j   =   0;   j   <   10;   j++) 
    { 
                if   (this.subup[j][0]   ==   this.subup[ch-48][0]) 
                { 
            str_return   +=   this.subup[j][1]; 
        } 
    } 
    str_return   =   str_return   +   this.subdw[lenstr   -   i   -   1]; 
    //lenstr=lenstr-1; 
    } 
    return   str_return;       
    }                           
        
    this.change2   =   function(str) 
    { 
    var   str_return   =   " "; 
    var   lenstr   =   str.length; 
    for   (var   i   =   0;   i   <   lenstr;   i++) 
    { 
    var   ch   =   str.charCodeAt(i); 
    for   (var   j   =   0;   j   <   10;   j++) 
    { 
                if   (this.subup[j][0]   ==   this.subup[ch   -   48][0]) 
                { 
    str_return   +=   this.subup[j][1]; 
        } 
    } 
    str_return   =   str_return   +   this.subdw2[lenstr   -   i   -   1]; 
    //lenstr=lenstr-1; 
    } 
    return(str_return); 
    } 
    
    this.parseNum   =   function(cashnum) 
    { 
        var   count   =   0; 
        var   i_index   =   cashnum.indexOf( ". "); 
        var   cashup   =   " ";         if   (cashnum.indexOf( ". ")   ==   -1) 
        { 
            cashup   =   class1.change(cashnum)   +   "整"; 
        } 
        else 
        { 
            var   num1   =   cashnum.substring(0,   i_index); 
            cashup   =   class1.change(num1); 
            var   num2   =   cashnum.substring(i_index   +   1); 
            if   (num2.length   ==   1) 
            { 
                    num2   =   num2   +   "0 "; 
            } 
            cashup   +=   class1.change2(num2); 
        } 
        
        return   cashup; 
    } 
    

解决方案 »

  1.   


    我也先写了个.数字的规则验证没去写.只写个大概意思
    <script type="text/javascript">
    var UPPER_NUM = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    var MAX_UNIT = ['元', '拾', '佰', '仟', '萬', '拾', '佰', '仟', '亿', '拾', '佰', '仟'];
    var MIN_UNIT = ['角', '分'];
    function changeMoney(n) {
    var _html = '', integer = n, fract;
    if(n.indexOf('.') != -1) {
     integer = n.split('.')[0];fract = n.split('.')[1];
    }
    for(var i = 0, j = integer.length, len = j; i < len; i++) {
    var _index = integer.charAt(i); --j;
    _html += UPPER_NUM[_index] + (_index > 0 ? MAX_UNIT[j] : '');
    }
    _html = _html.replace(/零{2,}/g,'零').replace(/零$/,'元');
    if(fract !== undefined) {
    for(var i = 0, j = 0, len = fract.length; i < len; i++) {
    _html += UPPER_NUM[fract.charAt(i)] + MIN_UNIT[j++];
    }
    } else {
    _html += '整';
    }
    return _html;
    } alert(changeMoney('12330.35'));
    alert(changeMoney('1.2'));
    alert(changeMoney('5000'));
    </script>