JS 金额大写转换
国内常用大写中文数字来表示金额,所以做了一个转换算法。
js
function transform(tranvalue) {
var dw2 = ["", "万", "亿"]; // 大单位
var dw1 = ["拾", "佰", "仟"]; // 小单位
var dw = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]; // 整数部分用
// 以下是小写转换成大写显示在合计大写的文本框中
// 分离整数与小数
tranvalue = tranvalue.toFixed(2);
var source = tranvalue.split(".");
var num = source[0];
var dig = source[1];
// 转换整数部分
var k1 = 0; // 计小单位
var k2 = 0; // 计大单位
var sum = 0;
var str = "";
var len = source[0].length; // 整数的长度
for (var i = 1; i <= len; i++) {
var n = source[0][len - i]; // 取得某个位数上的数字
var bn = 0;
if (len - i - 1 >= 0) {
bn = source[0][len - i - 1]; // 取得某个位数前一位上的数字
}
sum = sum + +n;
if (sum != 0) {
str = dw[+n] + str; // 取得该数字对应的大写数字,并插入到 str 字符串的前面
if (n == "0") sum = 0;
}
if (len - i - 1 >= 0) {
// 在数字范围内
if (k1 != 3) {
// 加小单位
if (bn != 0) {
str = dw1[k1] + str;
}
k1++;
} else {
// 不加小单位,加大单位
k1 = 0;
var temp = str[0];
if (temp == "万" || temp == "亿")
// 若大单位前没有数字则舍去大单位
str = str.substr(1, str.length - 1);
str = dw2[k2] + str;
sum = 0;
}
}
if (k1 == 3) {
// 小单位到千则大单位进一
k2++;
}
}
// 转换小数部分
var strdig = "";
if (dig != "") {
var n = dig[0];
if (n != 0) {
strdig += dw[+n] + "角"; // 加数字
}
var n = dig[1];
if (n != 0) {
strdig += dw[+n] + "分"; // 加数字
}
}
str += "元" + strdig;
return str;
}