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 相关文章推荐
QUnit jQuery的TDD框架
Nov 04 Javascript
jQuery绑定事件不执行但alert后可以正常执行
Jun 03 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
Jun 23 Javascript
在JavaScript中构建ArrayList示例代码
Sep 17 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
Apr 16 Javascript
Javascript简单实现面向对象编程继承实例代码
Nov 27 Javascript
JavaScript的设计模式经典之代理模式
Feb 24 Javascript
jQuery实现的可编辑表格完整实例
Jun 20 Javascript
BootStrap selectpicker后台动态绑定数据
Jun 01 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
Apr 12 Javascript
js使用cookie实现记住用户名功能示例
Jun 13 Javascript
uniapp开发打包多端应用完整方法指南
Dec 24 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
文件上传类
2006/10/09 PHP
php4的session功能评述(二)
2006/10/09 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
javascript 数组排序函数
2009/08/20 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
测试工程师岗位职责
2013/11/28 职场文书
不假外出检讨书
2014/01/27 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
催款律师函范文
2015/05/27 职场文书
基层党建工作简报
2015/07/21 职场文书
公司管理建议书
2015/09/14 职场文书