JS 人民币大写
/***
** HongShijin
** Me@HongShijin.com
** 2014-10-15 9:13:00.00000
** text/javascript
***/
(function ($)
{
Number.prototype.toRmbString = function ()
{
var c =
{
n: [38646, 22777, 36144, 21441, 32902, 20237, 38470, 26578, 25420, 29590, 25972, 36000], // "零壹贰叁肆伍陆柒捌玖整負";
u: [20191, 20336, 25342, 20140, 20191, 20336, 25342, 21513, 20191, 20336, 25342, 20806, 20191, 20336, 25342, 20740, 20191, 20336, 25342, 33836, 20191, 20336, 25342, 22278, 35282, 20998, 21400, 27627], // "仟佰拾京仟佰拾吉仟佰拾兆仟佰拾億仟佰拾萬仟佰拾圆角分厘毫";//"仟佰拾京仟佰拾吉仟佰拾兆仟佰拾亿仟佰拾万仟佰拾圆角分厘毫"
m: this
};
if (c.m < 0)
c.m *= -1;
for (var i = c.n.length - 1; i >= 0; i--)
{
c.t = c.n[i];
c[c.t] = String.fromCharCode(c.t);
c.n[i] = c[c.t];
}
for (var i = c.u.length - 1; i >= 0; i--)
{
c.t = c.u[i];
c[c.t] = String.fromCharCode(c.t);
c.u[i] = c[c.t];
}
c.t = c.m.toFixed(4).replace('.', '').replace(/^0+([0-9])/img, '$1');
if (c.t == "0")
return c[38646] + c[22278] + c[25972]; // "零圆整";
if (c.t.length > c.u.length)
throw { message: 'the input value too max.' };
c.u = c.u.splice(c.u.length - c.t.length, c.t.length);
for (var i = c.t.length - 1; i >= 0; i--)
c.t = c.t.substring(0, i) + c.n[String.charCodeAt(c.t.substring(i, i + 1)) - String.charCodeAt('0')] + c.u[i] + c.t.substring(i + 1, c.t.length);
c.m = new RegExp(c[38646] + '+[^' + c[22278] + c[33836] + c[20740] + c[20806] + c[21513] + c[20140] + ']', 'img');
c.t = c.t.replace(c.m, c[38646]); // /零+[^圆萬億兆吉京]/img, '零' //t = "壹仟零佰零拾零京叁仟零佰伍拾贰吉零仟零佰零拾零兆叁仟伍佰贰拾零億肆仟零佰贰拾零萬零仟零佰零拾伍圆壹角零分零厘伍毫";
c.m = new RegExp(c[38646] + '{2,}', 'img');
c.t = c.t.replace(c.m, c[38646]); // /零{2,}/img, '零' //t = "壹仟零零零京叁仟零伍拾贰吉零零零零兆叁仟伍佰贰拾零億肆仟零贰拾零萬零零零伍圆壹角零零伍毫"
c.m = new RegExp(c[38646] + '+([' + c[22278] + c[33836] + c[20740] + c[20806] + c[21513] + c[20140] + '])', 'img');
c.t = c.t.replace(c.m, '$1'); // /零+([圆萬億兆吉京])/img, '' //t = "壹仟零京叁仟零伍拾贰吉零兆叁仟伍佰贰拾零億肆仟零贰拾零萬零伍圆壹角零伍毫"
c.m = new RegExp('([' + c[33836] + c[20740] + c[20806] + c[21513] + c[20140] + '])[' + c[33836] + c[20740] + c[20806] + c[21513] + c[20140] + ']+', 'img');
c.t = c.t.replace(c.m, '$1'); // /([萬億兆吉京])[萬億兆吉京]+/img, '$1' //t = "壹仟京叁仟零伍拾贰吉兆叁仟伍佰贰拾億肆仟零贰拾萬零伍圆壹角零伍毫"
c.m = new RegExp('^[' + c[33836] + c[20740] + c[20806] + c[21513] + c[20140] + ']+', 'img');
c.t = c.t.replace(c.m, ''); // /^[萬億兆吉京]+/img, '' //"壹仟京叁仟零伍拾贰吉叁仟伍佰贰拾億肆仟零贰拾萬零伍圆壹角零伍毫"
if (c.t.substring(0, 1) == c[38646])// 零
c.t = c.t.substring(1, c.t.length);
if (c.t.substring(c.t.length - 1, c.t.length) == c[38646])// 零
c.t = c.t.substring(0, c.t.length - 1);
if (c.t.substring(c.t.length - 1, c.t.length) == c[22278])// 圆
c.t = c.t + c[25972]; // "整"
if (this >= 0)
return c.t;
return c[36000] + c.t; // 负 負
};
Number.prototype.toRmb = function ()
{
return this.toRmbString();
};
Number.prototype.rmb = function ()
{
return this.toRmbString();
};
})(null);
//将数字转换为会计可用的人民币大写格式。
JS 人民币大写的更多相关文章
- js 将数字转换成人民币大写的方法
//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...
- 返回人民币大写方式(num2rmb)
CREATE OR REPLACE FUNCTION num2rmb(Pi_MONEY NVARCHAR2) RETURN NVARCHAR2 IS -- PURPOSE :返回人民币大写方式 v_N ...
- FastReport调用Delphi中的人民币大写转换自定义函数
FastReport调用Delphi中的人民币大写转换自定义函数 FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje ...
- sql 数字转人民币大写函数(两种方法)
,)) returns @rmb table( 亿 ) ,仟万 ) ,佰万 ) ,拾万 ) ,万 ) ,仟 ) ,佰 ) ,拾 ) ,元 ) ,角 ) ,分 )) as begin insert in ...
- Java实现人民币大写精讲
想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...
- ORACLE数字转换人民币大写
ORACLE 数字转换人民币大写 示例. 数字 :183066999230.68 人民币大写 :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...
- Java实现人民币大写代码解析
想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...
- NET 人民币大写
/***** HongShijin** Me@HongShijin.com** 2009-3-15 10:13:00.00000** text/C#***/ /// <summary> / ...
- 数字转人民币大写(SQL SERVER)
--数字转人民币大写NumToRMB ---新建方法create FUNCTION dbo.NumToRMB (@num numeric(14,5)) RETURNS varchar(100) ...
随机推荐
- keil MDK编译器警告和错误详解(不定期更新)
工作后从单片机转成ARM,刚开始用ADS1.2编译器,用了一段时间,因为我接手的项目的老程序正是用ADS编译的,部门也大都在用.在学单片机的时候用的是keil c51编译器,ads和这个编译器在易用性 ...
- Linux下对字符串进行MD5加密
Linux下对字符串进行MD5加密 比如要用MD5在linux下加密字符串“test",可以使用命令:$ echo -n test|md5sum098f6bcd4621d373cade4e8 ...
- MATLAB中文论坛帖子整理(GUI)
MATLAB中文论坛帖子整理(GUI) 目 录 1.GUI新手之——教你读懂GUI的M文件... 10 2.GUI程序中改变current directory引起的问题... 15 3.GUI中 ...
- 行变列 拼接字符串 MSSQL 一个超级搞的问题
由数据 ThreeLevelSortID KeyWordID KeyWordName key1 key2 key3 key4 得到数据大 ThreeLevelSortID KeyWordName ke ...
- bootstrap注意事项(三)
1.<code> 标签用于表示计算机源代码或者其他机器可以阅读的文本内容.软件代码的编写者已经习惯了编写源代码时文本表示的特殊样式.<code> 标签就是为他们设计的.包含在该 ...
- TreeSet类的排序问题
http://www.cnblogs.com/lixiaolun/archive/2012/12/25/2832775.html TreeSet支持两种排序方法:自然排序和定制排序.TreeSet默 ...
- SVN多次重复验证
在MyEclipse中使用svn checkout时,总是弹出密码验证信息,原因是在首次保存密码时与服务器的密码不一致,而每次都是读取的本地密码导致重复验证,这里我们可以删除本地 的密码信息,问题解除 ...
- [转载]CTreeCtrl 和 CListCtrl 控件(VC_MFC)
来源:http://www.cnblogs.com/kzloser/archive/2012/11/23/2783305.html Tree Control 控件(MSDN 链接) 说明: 树形控件是 ...
- js解决click事件点击事件间隔方法
var myTimeout = null; $("#id").click(function(){ clearTimeout(myTimeout); myTimeout = setT ...
- Cocos2d-x 学习之路------(CCCallfunc 系列)
CCCallFunc,CCCallFuncN,CCCallFuncND,CCCallFuncO类都是调用函数来执行动作,他们的使用只是局限于他们调用的的函数的参数不同而不同 CCCallFunc的回调 ...