function ChineseNum(num) {
let changeNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
let unit = ['', '十', '百', '千', '万', '亿'];
num = parseFloat(num);
let intPart = Math.floor(num); // 整数部分
let decPart = (num - intPart).toFixed(2).toString().slice(2); // 小数部分
let intStr = intPart.toString();
let len = intStr.length;
let result = '';
let count = 0; //当前位数
for (let i = len - 1; i >= 0; i--) {
let num = (len - i - 1) % 4;
if (num === 0 && len - i - 1 !== 0) {
num = count % 8 == 0 ? 5 : 4
}
count++;
result = changeNum[intStr[i]] + unit[num] + result;
}
result = result.replace(/零(千|百|十)/g, '零').replace(/(零)+/g, '零').replace(/零万/g, '万').replace(/^零+/, '');
if (decPart) { // 如果有小数部分
result += '点';
for (let char of decPart) {
result += changeNum[char];
}
}
return result;
}
console.log(ChineseNum(2_5111_2345_6789.12));//二万五千一百一十一亿二千三百四十五万六千七百八十九点一二
可以处理带小数的数值