用JavaScript写一个数字转汉字的方法
时间: 2024-05-06 16:16:56 浏览: 206
以下是一个简单的 JavaScript 函数,可以将数字转换为中文大写的汉字:
```javascript
function numberToChinese(num) {
var cnNums = new Array(
"零",
"壹",
"贰",
"叁",
"肆",
"伍",
"陆",
"柒",
"捌",
"玖"
); // 中文数字字符数组
var cnIntUnits = new Array("", "拾", "佰", "仟"); // 中文整数单位数组
var cnDecUnits = new Array("角", "分", "毫", "厘"); // 中文小数单位数组
var cnIntLast = "元"; // 中文整数部分最末位单位
var maxNum = 9999999999999.99; // 最大处理的数字
var integerNum; // 金额整数部分
var decimalNum; // 金额小数部分
var chineseStr = ""; // 输出的中文金额字符串
var parts; // 分离金额后用的数组,预定义
if (num == "") {
return "";
}
num = parseFloat(num);
if (num >= maxNum) {
// 超出最大处理数字
return "";
}
if (num == 0) {
chineseStr = cnNums[0] + cnIntLast;
return chineseStr;
}
num = num.toString(); // 转换为字符串
if (num.indexOf(".") == -1) {
integerNum = num;
decimalNum = "";
} else {
parts = num.split(".");
integerNum = parts[0];
decimalNum = parts[1].substr(0, 4);
}
if (parseInt(integerNum, 10) > 0) {
// 获取整型部分转换
var zeroCount = 0;
var IntLen = integerNum.length;
for (var i = 0; i < IntLen; i++) {
var n = integerNum.substr(i, 1);
var p = IntLen - i - 1;
var q = p / 4;
var m = p % 4;
if (n == "0") {
zeroCount++;
} else {
if (zeroCount > 0) {
chineseStr += cnNums[0];
}
zeroCount = 0; // 归零
chineseStr += cnNums[parseInt(n)] + cnIntUnits[m];
}
if (m == 0 && zeroCount < 4) {
chineseStr += cnIntLast.charAt(q);
}
}
}
if (decimalNum != "") {
// 小数部分
var decLen = decimalNum.length;
for (var i = 0; i < decLen; i++) {
var n = decimalNum.substr(i, 1);
if (n != "0") {
chineseStr += cnNums[Number(n)] + cnDecUnits[i];
}
}
}
if (chineseStr == "") {
chineseStr += cnNums[0] + cnIntLast;
} else if (decimalNum == "") {
chineseStr += cnIntLast;
}
return chineseStr;
}
```
使用方法:
```javascript
console.log(numberToChinese(123456789.12)); // 一亿二千三百四十五万六千七百八十九元一角二分
console.log(numberToChinese(10000000000000)); // 超出最大处理数字,返回空字符串
```
阅读全文