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 相关文章推荐
js 回车提交表单两种实现方法
Dec 31 Javascript
浅析JavaScript中的隐式类型转换
Dec 05 Javascript
jQuery简单图表peity.js使用示例
May 02 Javascript
使用jQuery将多条数据插入模态框的实现代码
Oct 08 Javascript
JavaScript简单修改窗口大小的方法
Aug 03 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
May 16 Javascript
JavaScript编码风格指南(中文版)
Aug 26 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
Nov 23 Javascript
jquery事件与绑定事件
Mar 16 Javascript
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
Angular value与ngValue区别详解
Nov 27 Javascript
vuejs实现下拉框菜单选择
Oct 23 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中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php的一个简单加密解密代码
2014/01/14 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
拖动一个HTML元素
2006/12/22 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
DOM 事件流详解
2015/01/20 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
Snapfish爱尔兰:在线照片打印和个性化照片礼品
2018/09/17 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
MIS软件工程师的面试题
2016/04/22 面试题
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
幼儿园教师培训制度
2014/01/16 职场文书
2014年幼儿园元旦活动方案
2014/02/13 职场文书
个人贷款承诺书
2014/03/28 职场文书
医院合作意向书范本
2015/05/08 职场文书
给校长的建议书范文
2015/09/14 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP