考慮到整數(shù)位最多12位绢片,小數(shù)位最多2位的情況
function cashToChinese(cash) {
var digits=['零','壹','貳','叁','肆','伍','陸','柒','捌','玖'];
var largeUnits=['元','萬','億'];
var units=['','拾','佰','仟'];
var fractions=['角','分'];
let cStr='';
cash=cash.toString();
if(cash===''||cash===undefined||cash===null){
return cStr;
}
let preCash=cash.split('.')[0]||'';
let lastCash=cash.split('.')[1]||'00';
if(preCash.length>12||lastCash.length>2){
return cStr;
}
//遍歷小數(shù)位
for(let i=0;i<fractions.length;i++){
cStr+=(digits[lastCash.charAt(i)]+fractions[i]).replace(/零./,'');
}
cStr=cStr||'整';
//遍歷整數(shù)位,用str來記錄每4位的值
for(let i=preCash.length-1,n=0,str='';i>=0;i--){
let largeUnit='';
str=(digits[preCash[i]]+units[n%4])+str;
//用n計數(shù)每隔4位未荒,或者遍歷到頭的時候加單位('元','萬','億')
if((n+1)%4===0||i===0){
largeUnit=largeUnits[Math.floor(n/4)];
//考慮替換末位全是0時替換位空 或者中間連續(xù)0時替換為零
str=str.replace(/(零.)*零$/g,'').replace(/(零.)+/g,'零');
str+=largeUnit;
cStr=str+cStr;
str='';
}
n++;
}
//考慮處理('元','萬','億')單位前為10的情況,和整數(shù)位為0的情況
return cStr.replace(/壹拾(.){0,1}([元|萬|億])/g,'拾$1$2').replace(/^元/,'');
}