function convertToChinese(num) {
if (num === null || num === undefined || num === ``) {
num = 0;
}
let parts = num.toString().split(`.`);
let strs = parts[0].toString().replace(/(?=(\d{4})+$)/g, `,`).split(`,`).filter(Boolean);
let chars = [`零`, `壹`, `贰`, `叁`, `肆`, `伍`, `陆`, `柒`, `捌`, `玖`, `拾`];
let units = [``, `拾`, `佰`, `仟`];
let bigUnits = [``, `万`, `亿`];
function _transform(numStr) {
let result = ``;
for (let i = 0; i < numStr.length; i++) {
let digit = +numStr[i];
let c = chars[digit];
let u = units[numStr.length - 1 - i];
if (digit === 0) {
if (result[result.length - 1] !== chars[0]) {
result += c;
}
} else {
result += c + u;
}
}
if (result[result.length - 1] === chars[0]) {
result = result.slice(0, -1);
}
return result;
}
let result = ``;
for (let i = 0; i < strs.length; i++) {
let part = strs[i];
let c = _transform(part);
let u = c ? bigUnits[strs.length - 1 - i] : ``;
result += c + u;
}
let bool = String(num).indexOf(`.`) != -1;
if (bool) {
result = result + `元`;
if (parts[1].length > 2) {
parts[1] = parts[1].substr(0, 2)
}
for (let i = 0; i < parts[1].length; i++) {
let newchar = ``
let perchar = parts[1].charAt(i);
switch (perchar) {
case `0`: newchar = `零` + newchar; break;
case `1`: newchar = `壹` + newchar; break;
case `2`: newchar = `贰` + newchar; break;
case `3`: newchar = `叁` + newchar; break;
case `4`: newchar = `肆` + newchar; break;
case `5`: newchar = `伍` + newchar; break;
case `6`: newchar = `陆` + newchar; break;
case `7`: newchar = `柒` + newchar; break;
case `8`: newchar = `捌` + newchar; break;
case `9`: newchar = `玖` + newchar; break;
}
if (i == 0 && newchar !== `零`) newchar = newchar + `角`;
if (i == 1 && newchar !== `零`) newchar = newchar + `分`;
result = result + newchar;
}
}
if (!bool && result !== ``) {
result = result + `元整`;
}
return result;
}
js金额小写转为中文大写,小数点保留两位
于 2024-04-01 11:49:27 首次发布