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 相关文章推荐
让插入到 innerHTML 中的 script 跑起来的实现代码
Jul 01 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 Javascript
那些年,我还在学习jquery 学习笔记
Mar 05 Javascript
EasyUI学习之Combobox下拉列表(1)
Dec 29 Javascript
jQuery EasyUI开发技巧总结
Sep 26 jQuery
jQuery结合jQuery.cookie.js插件实现换肤功能示例
Oct 14 jQuery
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
Oct 25 Javascript
一个简单的node.js界面实现方法
Jun 01 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
Sep 30 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
Dec 12 Javascript
Paypal支付不完全指北
Jun 04 Javascript
javascript递归函数定义和用法示例分析
Jul 22 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 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
PHP设置进度条的方法
2015/07/08 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
JavaScript类的继承操作实例总结
2018/12/20 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
实例Python处理XML文件的方法
2015/08/31 Python
Python排序算法实例代码
2017/08/10 Python
python构建深度神经网络(续)
2018/03/10 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
python怎么调用自己的函数
2020/07/01 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
美丽心灵观后感
2015/06/01 职场文书
消防宣传语大全
2015/07/13 职场文书
情感电台广播稿
2015/08/18 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android