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.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
Jan 15 Javascript
百度地图api应用标注地理位置信息(js版)
Feb 01 Javascript
Ajax异步提交表单数据的说明及方法实例
Jun 22 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
原生JavaScript编写俄罗斯方块
Mar 30 Javascript
Bootstrap基本模板的使用和理解1
Dec 14 Javascript
利用JS实现简单的日期选择插件
Jan 23 Javascript
javascript实现秒表计时器的制作方法
Feb 16 Javascript
详解vue中axios的封装
Jul 18 Javascript
详解关于vue2.0工程发布上线操作步骤
Sep 27 Javascript
详解如何在Javascript和Sass之间共享变量
Nov 13 Javascript
JS实现点击掉落特效
Jan 29 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设计模式之责任链模式的深入解析
2013/06/13 PHP
基于jQuery的日期选择控件
2009/10/27 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
学校安全防火方案
2014/06/07 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
2015年端午节活动总结
2015/02/11 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
导游词之五台山
2019/10/11 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
django 认证类配置实现
2021/11/11 Python
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript