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 02 Javascript
写了一个layout,拖动条连贯,内容区可为iframe
Aug 19 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
Sep 03 Javascript
javascript的动态加载、缓存、更新以及复用(一)
Jun 09 Javascript
JS常用函数使用指南
Nov 23 Javascript
angularjs客户端实现压缩图片文件并上传实例
Jul 06 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
Aug 14 Javascript
chrome调试javascript详解
Oct 21 Javascript
javascript基于定时器实现进度条功能实例
Oct 13 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
Jan 03 Javascript
vue实现文件上传功能
Aug 13 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
Sep 02 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反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
PHP基本语法总结
2014/09/06 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
PHP中使用BigMap实例
2015/03/30 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
送你43道JS面试题(收藏)
2019/06/17 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
python使用代理ip访问网站的实例
2018/05/07 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
少儿节目主持串词
2014/04/02 职场文书
国际商贸专业自荐信
2014/06/09 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
个人委托函范文
2015/01/29 职场文书
导游词开场白
2015/01/31 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server