当前位置: 代码迷 >> Web前端 >> 将人民币数目字转换成大写形式
  详细解决方案

将人民币数目字转换成大写形式

热度:174   发布时间:2012-08-25 10:06:20.0
将人民币数字转换成大写形式

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">?
<html xmlns="http://www.w3.org/1999/xhtml" lang="gb2312">?
?<head>?
?<title>将人民币数字转换成大写形式</title>?
?<script language="jscript">?
function convertCurrency(currencyDigits) {?
// Constants:?
?var MAXIMUM_NUMBER = 99999999999.99;?
?// Predefine the radix characters and currency symbols for output:?
?var CN_ZERO = "零";?
?var CN_ONE = "壹";?
?var CN_TWO = "贰";?
?var CN_THREE = "叁";?
?var CN_FOUR = "肆";?
?var CN_FIVE = "伍";?
?var CN_SIX = "陆";?
?var CN_SEVEN = "柒";?
?var CN_EIGHT = "捌";?
?var CN_NINE = "玖";?
?var CN_TEN = "拾";?
?var CN_HUNDRED = "佰";?
?var CN_THOUSAND = "仟";?
?var CN_TEN_THOUSAND = "万";?
?var CN_HUNDRED_MILLION = "亿";?
?var CN_SYMBOL = "人民币";?
?var CN_DOLLAR = "元";?
?var CN_TEN_CENT = "角";?
?var CN_CENT = "分";?
?var CN_INTEGER = "整";?
??
// Variables:?
?var integral; // Represent integral part of digit number.?
?var decimal; // Represent decimal part of digit number.?
?var outputCharacters; // The output result.?
?var parts;?
?var digits, radices, bigRadices, decimals;?
?var zeroCount;?
?var i, p, d;?
?var quotient, modulus;?
??
// Validate input string:?
?currencyDigits = currencyDigits.toString();?
?if (currencyDigits == "") {?
?alert("Empty input!");?
?return "";?
?}?
?if (currencyDigits.match(/[^,.\d]/) != null) {?
?alert("Invalid characters in the input string!");?
?return "";?
?}?
?if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {?
?alert("Illegal format of digit number!");?
?return "";?
?}?
??
// Normalize the format of input digits:?
?currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters.?
?currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning.?
?// Assert the number is not greater than the maximum number.?
?if (Number(currencyDigits) > MAXIMUM_NUMBER) {?
?alert("Too large a number to convert!");?
?return "";?
?}?
??
// Process the coversion from currency digits to characters:?
?// Separate integral and decimal parts before processing coversion:?
?parts = currencyDigits.split(".");?
?if (parts.length > 1) {?
?integral = parts[0];?
?decimal = parts[1];?
?// Cut down redundant decimal digits that are after the second.?
?decimal = decimal.substr(0, 2);?
?}?
?else {?
?integral = parts[0];?
?decimal = "";?
?}?
?// Prepare the characters corresponding to the digits:?
?digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);?
?radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);?
?bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);?
?decimals = new Array(CN_TEN_CENT, CN_CENT);?
?// Start processing:?
?outputCharacters = "";?
?// Process integral part if it is larger than 0:?
?if (Number(integral) > 0) {?
?zeroCount = 0;?
?for (i = 0; i < integral.length; i++) {?
?p = integral.length - i - 1;?
?d = integral.substr(i, 1);?
?quotient = p / 4;?
?modulus = p % 4;?
?if (d == "0") {?
?zeroCount++;?
?}?
?else {?
?if (zeroCount > 0)?
?{?
?outputCharacters += digits[0];?
?}?
?zeroCount = 0;?
?outputCharacters += digits[Number(d)] + radices[modulus];?
?}?
?if (modulus == 0 && zeroCount < 4) {?
?outputCharacters += bigRadices[quotient];?
?}?
?}?
?outputCharacters += CN_DOLLAR;?
?}?
?// Process decimal part if there is:?
?if (decimal != "") {?
?for (i = 0; i < decimal.length; i++) {?
?d = decimal.substr(i, 1);?
?if (d != "0") {?
?outputCharacters += digits[Number(d)] + decimals[i];?
?}?
?}?
?}?
?// Confirm and return the final output string:?
?if (outputCharacters == "") {?
?outputCharacters = CN_ZERO + CN_DOLLAR;?
?}?
?if (decimal == "") {?
?outputCharacters += CN_INTEGER;?
?}?
?outputCharacters = CN_SYMBOL + outputCharacters;?
?return outputCharacters;?
}?
?</script>?
?</head>?
?<body>?
?<input id="Digits" type="text" name="Digits" size="20" />?
?<input id="Convert" type="button" value="Convert" name="Convert" onclick="Result.value = convertCurrency(Digits.value);" />?
?<input id="Result" type="text" name="Result" size="60" />?
</body>?
</html>

  相关解决方案