前段时间写了个C#版的将数字转变为大写形式的函数,现在因工作需要将那个函数改为javascript版: /* 将数值转换成人民币大写形式 */ function getCurrency(num) { var dNum,strResult; if(num=="") return ""; var reg=/^[-/+]?/d+(/./d+)?$/; if(!reg.test(num)) return "数字格式不正确!"; dNum=(num*100).toFixed(0); if(dNum==0) return "零元整"; strResult=""; var strText = "零壹贰叁肆伍陆柒捌玖"; var strUnit = "万仟佰拾亿仟佰拾万仟佰拾元角分"; var strNum =Math.abs(dNum).toString(); var tmpText, tmpUnit, j; //用于记录某一位上的数据与单位,j为第i位上的数值 var zeroCount = 0; //连续出现0的个数 if(dNum<0) strResult += "负" var count=strNum.length; if (count > strUnit.length) return "数据超出范围"; strUnit = strUnit.substr(strUnit.length - count); //截取可能用到的数据单位 for(i=0; i<count; i++) { j=Number(strNum.substr(i,1)); tmpText = ""; tmpUnit = ""; if (j != 0) //当前数据不为0时 { if (zeroCount > 0) //之前的数字为0时 { tmpText = strText.substr(0,1); zeroCount = 0; } tmpText += strText.substr(j,1); tmpUnit = strUnit.substr(i,1); } else { zeroCount++; //亿位或元位或0的连续数量不超过3 并且当前所取位数为元、万、亿、万亿上的数字时必须加上单位 if (count - i == 11 || count - i == 3 || (zeroCount <= 3 && (count + 1 - i) % 4 == 0)) tmpUnit = strUnit.substr(i,1); } strResult += tmpText + tmpUnit; if (i == count - 1 && j == 0) //最后一位为0时加上整 strResult += "整"; } return strResult; }