用JavaScript写一个数字转汉字的方法
时间: 2024-02-24 17:58:29 浏览: 51
以下是一个简单的 JavaScript 函数,它可以将数字转换为对应的中文数字:
```
function numberToChinese(num) {
var cnNums = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
var cnIntRadice = ["", "十", "百", "千"];
var cnIntUnits = ["", "万", "亿", "兆"];
var cnDecUnits = ["角", "分", "毫", "厘"];
var cnInteger = "整";
var cnIntLast = "元";
var maxNum = 999999999999999.9999;
var integerNum;
var chineseStr = "";
var i = 0;
var zeroCount = 0;
var intLen = 0;
var decLen = 0;
var parts;
var decNum;
var oldCh;
if (num == "" || num == null) {
return "";
}
num = parseFloat(num);
if (num >= maxNum) {
return "";
}
if (num == 0) {
chineseStr = cnNums[0] + cnIntLast + cnInteger;
return chineseStr;
}
if (num < 0) {
num = -num;
chineseStr += "负";
}
num = num.toString();
if (num.indexOf(".") == -1) {
integerNum = num;
decNum = "";
} else {
parts = num.split(".");
integerNum = parts[0];
decNum = parts[1].substr(0, 4);
}
intLen = integerNum.length;
for (i = 0; i < intLen; i++) {
var n = parseInt(integerNum.charAt(i));
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[n] + cnIntRadice[m];
}
if (m == 0 && zeroCount < 4) {
chineseStr += cnIntUnits[q];
zeroCount = 0;
}
}
if (decNum != "") {
decLen = decNum.length;
for (i = 0; i < decLen; i++) {
var n = parseInt(decNum.charAt(i));
if (n != 0) {
chineseStr += cnNums[n] + cnDecUnits[i];
}
}
}
if (chineseStr == "") {
chineseStr += cnNums[0];
}
chineseStr += cnIntLast;
if (decNum == "") {
chineseStr += cnInteger;
}
return chineseStr;
}
```
使用示例:
```
console.log(numberToChinese(1234567.89)); // 一百二十三万四千五百六十七元八角九分
```
注意:这个函数只支持处理到 `999999999999999.9999` 的数字,超过这个范围的数字将会返回空字符串。另外,这个函数没有对输入进行严格的校验,如果输入的不是数字字符串,可能会返回错误的结果。