方法一

function DX(n) { if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) return "數據非法"; var unit = "千百拾億千百拾萬千百拾元角分", str = ""; n += "00"; var p = n.indexOf('.'); if (p >= 0) n = n.substring(0, p) + n.substr(p+1, 2); unit = unit.substr(unit.length - n.length); for (var i=0; i < n.length; i++) str += '零壹貳叄肆伍陸柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i); return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(萬|億|元)/g, "$1").replace(/(億)萬|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整"); }
方法2
<script type="text/javascript">
var _change = {
ary0: ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"],
ary1: ["", "十", "百", "千"],
ary2: ["", "萬", "億", "兆"],
init: function (name) {
this.name = name;
},
strrev: function () {
var ary = []
for (var i = this.name.length; i >= 0; i--) {
ary.push(this.name[i])
}
return ary.join("");
}, //倒轉字符串。
pri_ary: function () {
var $this = this
var ary = this.strrev();
var zero = ""
var newary = ""
var i4 = -1
for (var i = 0; i < ary.length; i++) {
if (i % 4 == 0) { //首先判斷萬級單位,每隔四個字符就讓萬級單位數組索引號遞增
i4++;
newary = this.ary2[i4] + newary; //將萬級單位存入該字符的讀法中去,它肯定是放在當前字符讀法的末尾,所以首先將它疊加入$r中,
zero = ""; //在萬級單位位置的“0”肯定是不用的讀的,所以設置零的讀法為空
}
//關於0的處理與判斷。
if (ary[i] == '0') { //如果讀出的字符是“0”,執行如下判斷這個“0”是否讀作“零”
switch (i % 4) {
case 0:
break;
//如果位置索引能被4整除,表示它所處位置是萬級單位位置,這個位置的0的讀法在前面就已經設置好了,所以這里直接跳過
case 1:
case 2:
case 3:
if (ary[i - 1] != '0') {
zero = "零"
}
; //如果不被4整除,那么都執行這段判斷代碼:如果它的下一位數字(針對當前字符串來說是上一個字符,因為之前執行了反轉)也是0,那么跳過,否則讀作“零”
break;
}
newary = zero + newary;
zero = '';
}
else { //如果不是“0”
newary = this.ary0[parseInt(ary[i])] + this.ary1[i % 4] + newary; //就將該當字符轉換成數值型,並作為數組ary0的索引號,以得到與之對應的中文讀法,其后再跟上它的的一級單位(空、十、百還是千)最后再加上前面已存入的讀法內容。
}
}
if (newary.indexOf("零") == 0) {
newary = newary.substr(1)
}//處理前面的0
return newary;
}
}
//創建class類
function change() {
this.init.apply(this, arguments);
}
change.prototype = _change
具體轉換使用
var k = new change((i+1).toString());