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中的style.cssText使用教程
Nov 06 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
Feb 23 Javascript
jQuery与getJson结合的用法实例
Aug 07 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
Dec 08 Javascript
Jquery组件easyUi实现选项卡切换示例
Aug 23 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
Aug 29 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
Apr 13 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
Jul 18 Javascript
webpack 4.0.0-beta.0版本新特性介绍
Feb 10 Javascript
红黑树的插入详解及Javascript实现方法示例
Mar 26 Javascript
利用Vue构造器创建Form组件的通用解决方法
Dec 03 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
Dec 30 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+xslt在windows平台上
2006/10/09 PHP
SMARTY学习手记
2007/01/04 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
jquery验证表单中的单选与多选实例
2013/08/18 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
js实现图片上传预览原理分析
2017/07/13 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python基于multiprocessing的多进程创建方法
2015/06/04 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
django foreignkey(外键)的实现
2019/07/29 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
金融专业推荐信
2013/11/14 职场文书
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
毕业生找工作推荐信
2013/11/21 职场文书
工作中个人的自我评价
2013/12/31 职场文书
清洁工岗位职责
2015/02/13 职场文书
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
教你如何用cmd快速登录服务器
2022/06/10 Servers