methods: {
//this.toRmb(100)
//金额大写
toRmb(val) {
const upperDigits = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
const units = ['', '拾', '佰', '仟', '万', '拾万', '佰万', '仟万', '亿', '拾亿', '佰亿', '仟亿', '万亿'];
const fractionalUnits = ['角', '分', '厘', '毫'];
// 分离整数和小数部分
let [integerPart, fractionalPart] = val.toString().split('.');
integerPart = parseInt(integerPart);
fractionalPart = fractionalPart ? parseInt(fractionalPart) : 0;
if (Number.isNaN(integerPart) || integerPart < 0) return '';
if (integerPart.toString().length > 15) return '数字较大溢出';
let integerResult = '';
if (integerPart === 0) {
integerResult = '零';
} else {
let integerStr = integerPart.toString();
let n = integerStr.length;
for (let i = 0; i < n; i++) {
let digit = integerStr[i];
if (digit !== '0') {
integerResult += upperDigits[digit] + units[n - i - 1];
} else {
if (i < n - 1 && integerStr[i + 1] !== '0') {
integerResult += '零';
}
}
}
}
let fractionalResult = '';
if (fractionalPart > 0) {
let fractionalStr = fractionalPart.toString().padStart(4, '0');
for (let i = 0; i < 4; i++) {
let digit = fractionalStr[i];
if (digit !== '0') {
fractionalResult += upperDigits[digit] + fractionalUnits[i];
}
}
}
if (fractionalResult === '') {
return integerResult + '元整';
} else {
return integerResult + '元' + fractionalResult;
}
}
js 金额大写转换
于 2024-07-20 23:05:41 首次发布