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 相关文章推荐
jQuery 可以拖动的div实现代码 脚本之家修正版
Jun 26 Javascript
JQUERY设置IFRAME的SRC值的代码
Nov 30 Javascript
javascript延时加载之defer测试
Dec 28 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
原生js实现放大镜效果
Jan 11 Javascript
js清除浏览器缓存的几种方法
Mar 15 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
jquery实现简单实用的轮播器
May 23 jQuery
Angular 4依赖注入学习教程之简介(一)
Jun 04 Javascript
微信小程序getPhoneNumber获取用户手机号
Sep 29 Javascript
js保留两位小数方法总结
Jan 31 Javascript
js中let能否完全替代IIFE
Jun 15 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加密解密的代码
2006/10/09 PHP
php array_unique之后json_encode需要注意
2011/01/02 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
javascript 对象的定义方法
2007/01/10 Javascript
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
让python json encode datetime类型
2010/12/28 Python
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
简单学习Python time模块
2016/04/29 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
在求职信中如何凸显个人优势
2013/10/30 职场文书
中学生操行评语
2014/04/24 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
交通安全主题班会
2015/08/12 职场文书
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL