JavaScript 动态将数字金额转化为中文大写金额


Posted in Javascript onMay 14, 2009
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("您输入的金额太大,请重新输入!"); 
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; 
}
Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(7)
Dec 23 Javascript
jquery 多行滚动代码(附详细解释)
Jun 17 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
Oct 09 Javascript
解析Javascript中难以理解的11个问题
Dec 09 Javascript
js生成随机数之random函数随机示例
Dec 20 Javascript
node.js中的fs.truncate方法使用说明
Dec 15 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
May 03 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
Dec 12 Javascript
Ext JS 实现建议词模糊动态搜索功能
May 13 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
TypeScript中使用getElementXXX()的示例代码
Sep 12 Javascript
vue实现简单计算商品价格
Sep 14 Javascript
JS面向对象、prototype、call()、apply()
May 14 #Javascript
JavaScript Date对象使用总结
May 14 #Javascript
jQuery 技巧大全(新手入门篇)
May 12 #Javascript
JS 字符串连接[性能比较]
May 10 #Javascript
javascript获取当前ip的代码
May 10 #Javascript
&amp;lt;script defer&amp;gt; defer 是什么意思
May 10 #Javascript
extjs fckeditor集成代码
May 10 #Javascript
You might like
PHP实现文件下载断点续传详解
2014/10/15 PHP
php正则表达式学习笔记
2015/11/13 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python实现批量转换文件编码的方法
2015/07/28 Python
python 根据pid杀死相应进程的方法
2017/01/16 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
python实现日志按天分割
2019/07/22 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
python利用opencv实现颜色检测
2021/02/23 Python
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
一道SQL面试题
2012/12/31 面试题
超市5.1促销活动
2014/01/15 职场文书
高考备战决心书
2014/03/11 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
承诺书模板大全
2015/05/04 职场文书
趣味运动会简讯
2015/07/20 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏