代码:
function numberToChinese(number) {
/*本方法:数字金额转化为汉字大写金额;
*支持最大整数兆(万亿);
*支持小数后四位(毫);
*/
var Chinese = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
var ChineseInteger = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '兆'];
var ChineseDecimal = ['角', '分', '厘', '毫'];
var resultInteger = '',
resultDecimal = '',
resultNegative = '';
number = isNaN(number) ? 0 : number; //校验数字格式
var numStr = number.toString(); //转化为字符串
//定义数组 获取整数部分========================
var arrInteger = numStr.split('.')[0];
if (!arrInteger || arrInteger == '0') {
resultInteger += '零元';
} else {
if (arrInteger.length > 13) {
arrInteger = arrInteger.substr( - 13);
}
//整数部分 数字转化对应汉字
var numInteger = arrInteger.split('');
var IntegerData = new Array();
for (var i in numInteger) {
for (var i2 in Chinese) {
if (numInteger[i] == i2) {
IntegerData.push(Chinese[i2]);
}
if (numInteger[i] == '-') {
resultNegative = '负';
}
}
}
IntegerData.reverse();
//整数部分 数组拼接
for (var i in IntegerData) {
for (var i2 in ChineseInteger) {
if (i == i2) {
IntegerData[i] = IntegerData[i] + ChineseInteger[i];
}
}
}
IntegerData.reverse();
for (var i in IntegerData) {
resultInteger += IntegerData[i];
}
resultInteger += '元';
}
//定义数组 获取小数部分=========================
var arrDecimal = numStr.split('.')[1];
if (arrDecimal) {
if (arrDecimal.length > 4) {
arrDecimal = arrDecimal.substr(0, 4);
}
//小数部分 数字转化对应汉字
var numDecimal = arrDecimal.split('');
var DecimalData = new Array();
for (var i in numDecimal) {
for (var i2 in Chinese) {
if (numDecimal[i] == i2) {
DecimalData.push(Chinese[i2]);
}
}
}
//小数部分 数组拼接
for (var i in DecimalData) {
for (var i2 in ChineseDecimal) {
if (i == i2) {
DecimalData[i] = DecimalData[i] + ChineseDecimal[i];
}
}
}
for (var i in DecimalData) {
resultDecimal += DecimalData[i];
}
}
//整数部分+小数部分 拼接返回
return resultNegative + resultInteger + resultDecimal;
}
示例:
var data = 12345;
console.log(numberToChinese(data));
//结果:壹万贰仟叁佰肆拾伍元
var data = 12345.12345;
console.log(numberToChinese(data));
//结果:壹万贰仟叁佰肆拾伍元壹角贰分叁厘肆毫
var data = 0;
console.log(numberToChinese(data));
//结果:零元
var data = 0.234;
console.log(numberToChinese(data));
//结果:零元贰角叁分肆厘
var data = -345.89;
console.log(numberToChinese(data));
//结果:负叁佰肆拾伍元捌角玖分
var data = -10004.89;
console.log(numberToChinese(data));
//结果:负壹万零仟零佰零拾肆元捌角玖分
var data = 50000;
console.log(numberToChinese(data));
//结果:伍万零仟零佰零拾零元
var data = 50000.0004;
console.log(numberToChinese(data));
//结果:伍万零仟零佰零拾零元