/***
** 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 人民币大写的更多相关文章

  1. js 将数字转换成人民币大写的方法

    //将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...

  2. 返回人民币大写方式(num2rmb)

    CREATE OR REPLACE FUNCTION num2rmb(Pi_MONEY NVARCHAR2) RETURN NVARCHAR2 IS -- PURPOSE :返回人民币大写方式 v_N ...

  3. FastReport调用Delphi中的人民币大写转换自定义函数

    FastReport调用Delphi中的人民币大写转换自定义函数   FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje ...

  4. sql 数字转人民币大写函数(两种方法)

    ,)) returns @rmb table( 亿 ) ,仟万 ) ,佰万 ) ,拾万 ) ,万 ) ,仟 ) ,佰 ) ,拾 ) ,元 ) ,角 ) ,分 )) as begin insert in ...

  5. Java实现人民币大写精讲

    想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...

  6. ORACLE数字转换人民币大写

    ORACLE 数字转换人民币大写     示例.   数字                    :183066999230.68 人民币大写        :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...

  7. Java实现人民币大写代码解析

    想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...

  8. NET 人民币大写

    /***** HongShijin** Me@HongShijin.com** 2009-3-15 10:13:00.00000** text/C#***/ /// <summary> / ...

  9. 数字转人民币大写(SQL SERVER)

    --数字转人民币大写NumToRMB ---新建方法create  FUNCTION dbo.NumToRMB (@num numeric(14,5))   RETURNS varchar(100) ...

随机推荐

  1. uva 10972 RevolC FaeLoN cdoj 方老师和农场

    //自己写的第一发tarjan 解:先进行双连通分解并缩点,分解后一定是一颗树,设叶节点个数为n那么答案就是(n+1)/2 关于双连通分量求解:在跑tarjan时判断每个点连向父节点的边是否是桥,如果 ...

  2. 使用kd-tree加速k-means

    0.目录 前置知识 思路介绍 详述 1 确定h的中心点 2 算法步骤 java实现 1.前置知识 本文内容基于<Accelerating exact k-means algorithms wit ...

  3. Spring、Spring自动扫描和管理Bean

    Spring2.5为我们引入了组件自动扫描机制,它可以在类路径下寻找标记了@Component.@Service.@Controller.@Repository注解的类,并把这些类纳入到spring容 ...

  4. Linux是什么

    计算机主要以二进制为单位,而目前常用的磁盘容量单位为B,其单位换算为1B=8bit,其他的以1024为其倍数,如1GB=1024MB等. 操作系统(Operation System)主要用于管理与驱动 ...

  5. android httpClient 支持HTTPS的访问方式

    项目中Android https请求地址遇到了这个异常,javax.net.ssl.SSLPeerUnverifiedException: No peer certificate,是SSL协议中没有终 ...

  6. easyui的样式easyui-textbox的一个bug

    easyui-testbox这个样式很恶心,用了这个就不能用传统的JQ来取值了,最近在使用上又发现了一个问题,就是赋值为0时,在输入框上会不显示,坑. <input class="ea ...

  7. Oracle EBS 如何月结[Z]

    概述应付模块的多数业务基于采购和库存的操作,因此应付模块的月结应该在采购模块和库存模块月结后才能关闭会计期.月结步骤在每个会计期末,应付模块的月结应遵循以下流程:1.检查业务是否全部录入;2.检查是否 ...

  8. 望大神批评教育国庆无聊之作:ObjectValidator

    起因: 本人国庆无聊,不知道干嘛, 所以模仿FluentValidation写了个简化版的ObjectValidator 个人设想是能用类似fluent的方式创建验证规则,然后使用者缓存并验证自己的对 ...

  9. EC读书笔记系列之4:条款8 别让异常逃离析构函数

    条款8 别让异常逃离析构函数 记住: ★析构函数绝对不要吐出异常.若一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序. ★若客户需对某个操作函数运行期间 ...

  10. 无缝滚动 jQuery经典代码 (收藏)

    <script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4 ...