文章目录
数字金额转大写金额
function digitToUppercase(num){
let fraction = ['角', '分'],
digit = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'],
unit = [['元', '万', '亿'],['', '拾', '佰', '仟']],
head = num < 0 ? '欠' : '',
s = '';
num = Math.abs(num);
//如果包含小数点
if(num.toString().indexOf('.')>-1){
//取出小数
const frac = num.toString().split('.')[1];
//小数最多到分位
for (let i = 0; i < Math.min(fraction.length,frac.length); i++) {
s += (digit[frac.charAt(i)] + fraction[i]);
}
}
s = s || '整';
//处理整数部分
num = Math.floor(num);
for (let i = 0; i < unit[0].length && num > 0; i++) {
let p = ''
for (let j = 0; j < unit[1].length && num > 0; j++) {
p = digit[num % 10] + unit[1][j] + p
num = Math.floor(num / 10)
}
s = p.replace(/(零.)*零$/, '') + unit[0][i] + s
}
return head + s.replace(/(零.)+/g, '零');
}
结果如下: