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学习笔记(三)显示当时时间的代码
Apr 08 Javascript
通过javascript把图片转化为字符画
Oct 24 Javascript
javascript合并表格单元格实例代码
Jan 03 Javascript
JQuery遍历元素的后代和同胞实现方法
Sep 18 Javascript
巧用canvas
Jan 21 Javascript
JavaScript实现公历转农历功能示例
Feb 13 Javascript
js实现移动端微信页面禁止字体放大
Feb 16 Javascript
Three.js开发实现3D地图的实践过程总结
Nov 20 Javascript
vue.js 获取select中的value实例
Mar 01 Javascript
Vue项目中ESlint规范示例代码
Jul 04 Javascript
JS实现长图上下滚动效果
Mar 19 Javascript
微信小程序订阅消息(java后端实现)开发
Jun 01 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获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
Python运算符重载用法实例分析
2015/06/01 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
如何在C# winform中异步调用web services
2015/09/21 面试题
买房子个人收入证明
2014/01/16 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
小学生思想品德评语
2014/12/31 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书