Skip to content

Instantly share code, notes, and snippets.

@jikeytang
Last active August 29, 2015 14:02
Show Gist options
  • Save jikeytang/853e02a7546b86af6fe2 to your computer and use it in GitHub Desktop.
Save jikeytang/853e02a7546b86af6fe2 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140625-题目1
将任意数字的金额,转换成汉字大写的形式。
如:1234.50 -> 壹仟贰佰叁拾肆圆伍角。
壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整。
PS:
1. 回复时注意加上下面这句话,才会有语法高亮或格式缩进。
```javascript
// you code
```
2. 粘贴代码时请使用shift+tab,缩进前面的空白。
@rambo-panda
Copy link

var test = function(num_str){
  num_str = parseFloat(num_str) + '';
  if(num_str ==='NaN'){
    throw 'typeof num_str not is number';
  }

  var money_unit = ['亿','万','仟','佰','拾','元'],
      money_upper = '零壹贰叁肆伍陆柒捌玖',
      i = num_str.length -1,
      index_point = num_str.indexOf('.'),
      new_num_str= num_str.replace('.', ''),
      result ='';

    money_unit = money_unit.concat( index_point > -1 ? (--i,new_num_str.length - index_point > 1 ? ['角','分']:'角' ) : '整');

    do{
        if(!new_num_str.charAt(i)){break; }
        result = money_upper.charAt(new_num_str.charAt(i)) + (money_unit.pop()||'') + result;
        --i;
    }while(1);
    return result;
};
test(1234.50);

@jikeytang
Copy link
Author

function to(n){
    var a = ['亿','万','仟','佰','拾','元'],
        b = ['元','拾','佰','仟','万','亿'],
        s = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];

    var i=(n+'').length-1;
    return (n+'').replace(/\d/g, function(m, k){
        return s[m]+b[i--];
    });
}
console.log(to(123125));

@tanxingxing
Copy link

    function fuckNum(num){
        var num=parseFloat(num);// 2.00之类的
        var arr=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
        var arr1=['圆','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟','万','拾','佰','仟','万'];
        var arr2=['角','分','厘','毫'];
        //var arr2=[];
        var num=num+'';
        var index=num.split('.');
        var left=index[0];
        var right=index[1];
        var rightStr='',leftStr='';
        //alert(NaN==NaN);
        if(!right){
            rightStr='整';
        }else{
            var i= 0,len=right.length>=4?4:right.length;
            for(;i<len;i++){
               // alert(arr2[i]);
                if(right[i]=='0'){
                    rightStr+=arr[right[i]];
                }else{
                    rightStr+=arr[right[i]]+arr2[i];
                }
            }
        }
        rightStr=rightStr.replace(/(零){2,}/,'零');

        i= 0;
        len=left.length;
        for(;i<len;i++){
            if(left[i]==0){
                leftStr+=arr[left[i]];
            }else{
                //alert()
                leftStr+=arr[left[i]]+arr1[len-i-1];
            }
        }
        leftStr=leftStr.replace(/(零){2,}/,'零');
        leftStr=leftStr.replace(/(零)+$/,'圆');
        alert(leftStr+rightStr);
    }

    fuckNum(214578940040.0074);
    fuckNum(123459);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment