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获取GridView中用户点击控件的行号,列号
Apr 14 Javascript
JS 获取span标签中的值的代码 支持ie与firefox
Aug 24 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
Apr 02 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
May 14 Javascript
JavaScript创建一个object对象并操作对象属性的用法
Mar 23 Javascript
微信小程序中单位rpx和rem的使用
Dec 06 Javascript
详解webpack介绍&amp;安装&amp;常用命令
Jun 29 Javascript
react系列从零开始_简单谈谈react
Jul 06 Javascript
js中对象和面向对象与Json介绍
Jan 21 Javascript
vue-router的hooks用法详解
Jun 08 Javascript
jdk1.8+vue elementui实现多级菜单功能
Sep 24 Javascript
JavaScript实现通讯录功能
Dec 27 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
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
详解jQuery中的事件
2016/12/14 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
python发送HTTP请求的方法小结
2015/07/08 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
python 异常处理总结
2016/10/18 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
python 实现A*算法的示例代码
2018/08/13 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
python中如何写类
2020/06/29 Python
初中女生自我鉴定
2013/12/19 职场文书
2019入党申请书格式
2019/06/25 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
Python面向对象编程之类的概念
2021/11/01 Python