前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript实现数字转大写金额的函数

javascript实现数字转大写金额的函数

作者头像
菩提树下的杨过
发布2018-01-22 16:31:44
1.5K0
发布2018-01-22 16:31:44
举报
代码语言:js
复制
<SCRIPT type="text/javascript" Charset="GB2312">
 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_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("请输入要转换的数字!");
 return "";
 }
 if (currencyDigits.match(/[^,.\d]/) != null) {
 alert("数字中含有非法字符!");
 return "";
 }
 if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {
 alert("错误的数字格式!");
 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("超出转换最大范围!");
 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;
 }
 }
 }
 // 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>
 <INPUT id=Digits name=Digits size="15" value="1000001" > <INPUT id=Convert onclick="Result.value = convertCurrency(Digits.value);" type=button value=Convert name=Convert height="185659256"> <INPUT id=Result size=30 name=Result > 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2007-11-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档