1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > js将阿拉伯数字转换为大写中文金额

js将阿拉伯数字转换为大写中文金额

时间:2022-09-17 05:59:57

相关推荐

js将阿拉伯数字转换为大写中文金额

moneyToCaptital = (money: string) => {//将小数点前后划分开const dots=money.split('.')const dotFor=dots[0]const dotBehind=dots[1]//小数点前一部分,先反转一下,如'123'变成‘321’money = dotFor.split('').reverse().join('')const cap = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")const unit = new Array("", "拾", "佰", "仟")const lunit = new Array("", "万", "亿", "兆")const len = money.lengthconst level = Math.ceil(len / 4)let res = ''//每4位数作为一次计算,如'1234444'读作一百二十三万四千四百四十四,反转后变为4444,321,从后开始往前计算for (let i = level - 1; i >= 0; --i) {let hasZero = false//用一个hasZero变量控制0的读法for (let k = 3; k >= 0; --k) {let cur = +i * 4 + kif (cur < len) {//如果0在中间或前面,读出来,如果在后面不读出来//如果有多个0在前面或中间,只读一个if (money[cur] == '0') hasZero = true//遇到0先不读出else {//遇到0之后的第一个非0数字证明0在中间位置,需要读出来if (hasZero) {res += '零'}res += cap[+money[cur]] + ''res += unit[cur % 4] + ''}}}res += lunit[i]}res+='元'//小数点后面,只考虑两位数角和分if(dotBehind){const dot0:string=dotBehind[0]const dot1:string=dotBehind[1]if(dot0=='0'){if(dot1&&dot1!='0') res+=cap[+dot0]+'角'+cap[+dot1]+'分'else res+=cap[+dot0]+'角'}else{if(dot1&&dot1!='0') res+='零角'+cap[+dot1]+'分'}}console.log('res', res)return res}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。