数字转人民币大写形式
function toChinese(str){
//大写数字
var arrNum = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
// 基本单位
var Intdanwei1 = ['','拾','佰','仟'];
var Intdanwei2 = ['','万','亿','兆'];
var Floatdanwei = ['角','分','毫','厘']
var zheng = "整";
var yuan = '元';
//最大数字
var maxNum = 9999999999999999.9999
//整数部分
var zhengNum;
//小数部分
var floatNum;
//装整形和小数的数组
var parts;
//输出的字符串
var chinese = '';
//参数为空
if(str == ''){
return '';
}
//参数不为空时
str = parseFloat(str)
//最大数字
if( str > maxNum){
return '';
}
//如果传的数字为0
if(str == 0){
chinese = arrNum[0] + zheng + yuan;
}
//如果传的数字不为0;
str = str.toString();
//判断str是否有小数点
if(str.indexOf('.') == -1){
zhengNum = str;
floatNum = '';
}else{
parts = str.split('.'); //以点分割为数组
zhengNum = parts[0]; //整数部分
floatNum = parts[1].substr(0,4); //保留四位小数
}
//整数部分转换
if(parseInt(zhengNum,10) > 0){
var count = 0;
var lens = zhengNum.length;
for(var i = 0 ; i < lens; i++){
//每次循环截取一个字符
var n = zhengNum.substr(i,1);
//截取的字符在字符串中的位置
var p = lens - i - 1;
//根据结果匹配单位
var q = p/4;
//根据结果匹配单位
var m = p%4;
if(n == '0'){ //添加'零'
count++;
}else{
if(count > 0){
//添加'零'
chinese += arrNum[0];
//恢复count值为0;
count = 0;
}
chinese += arrNum[Number(n)] + Intdanwei1[m]
}
//如果m=0,那么当前字串的位置为4的倍数,根据单位的特点,4位一分割,取得当前字串的单位
if(m == 0){
chinese += Intdanwei2[q]
}
}
chinese += yuan;
}
//小数部分转换
if(floatNum != ''){
var floatLen = floatNum.length;
for(var i = 0 ; i < floatLen; i++){
var n = floatNum.substr(i,1);
if(n != '0'){
chinese += arrNum[parseInt(n)] + Floatdanwei[i]
}
}
}else{
chinese += zheng;
};
if(chinese == ''){
chinese = arrNum[0] + zheng + yuan;
}
return chinese;
}