function numberToChinese(num) {
const cnNums = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const cnIntRadice = ['', '十', '百', '千'];
const cnIntUnits = ['', '万', '亿', '兆'];
const cnDecUnits = ['角', '分', '毫', '厘'];
const cnInteger = '整';
const cnIntLast = '元';
const maxNum = 9999999999999.9999;
if (num === '') {
return '';
}
num = parseFloat(num);
if (num >= maxNum) {
return '超出最大处理数字';
}
if (num === 0) {
return cnNums[0] + cnIntLast + cnInteger;
}
let IntegerNum; // 整数部分
let DecimalNum; // 小数部分
let ChineseStr = ''; // 输出的中文大写字符串
let parts; // 分离整数和小数部分
if (num.toString().indexOf('.') === -1) {
IntegerNum = num;
DecimalNum = '';
} else {
parts = num.toString().split('.');
IntegerNum = parts[0];
DecimalNum = parts[1].substr(0, 4);
}
if (parseInt(IntegerNum, 10) > 0) {
let zeroCount = 0;
let IntLen = IntegerNum.length;
for (let i = 0; i < IntLen; i++) {
let n = IntegerNum.substr(i, 1);
let p = IntLen - i - 1;
let q = Math.floor(p / 4);
let m = p % 4;
if (n === '0') {
zeroCount++;
} else {
if (zeroCount > 0) {
ChineseStr += cnNums[0];
}
zeroCount = 0;
ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
if (m === 0 && zeroCount < 4) {
ChineseStr += cnIntUnits[q];
}
}
ChineseStr += cnIntLast;
}
if (DecimalNum !== '') {
let decLen = DecimalNum.length;
for (let i = 0; i < decLen; i++) {
let n = DecimalNum.substr(i, 1);
if (n !== '0') {
ChineseStr += cnNums[parseInt(n)] + cnDecUnits[i];
}
}
}
if (ChineseStr === '') {
ChineseStr += cnNums[0] + cnIntLast + cnInteger;
} else if (DecimalNum === '') {
ChineseStr += cnInteger;
}
return ChineseStr;
}
// 示例
console.log(numberToChinese(123456789)); // "一十二亿三千四百五十六万七千八百九十九元整"
console.log(numberToChinese(100101)); // "一十万零一百零一元整"
console.log(numberToChinese(0.1)); // "零元一角"
numberToChinese
函数用于将阿拉伯数字转换为中文大写金额。split
方法将数字分为整数和小数部分。示例代码展示了如何使用该函数进行转换,并输出了几个示例结果。
上一篇:js 数组map
下一篇:js 大小写转换
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站