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

/// <summary>
/// 转换人民币大写
/// </summary>
/// <param name="input">数字输入</param>
  /// <returns>大写金额</returns>
public static string ToSuperRMB(object input)
{
var d = decimal.Zero;
if (input == null)
return ToSuperRMB(d);

if (input is decimal)
return ToSuperRMB((decimal)input);

if (input is double)
return ToSuperRMB(new decimal((double)input));

if (input is float)
return ToSuperRMB(new decimal((float)input));

if (input is int)
return ToSuperRMB(new decimal((int)input));

if (input is long)
return ToSuperRMB(new decimal((long)input));

if (input is uint)
return ToSuperRMB(new decimal((uint)input));

if (input is ulong)
return ToSuperRMB(new decimal((ulong)input));

if (decimal.TryParse(input.ToString(), out d))
return ToSuperRMB(d);

return input.ToString();//return ToSuperRMB(d);//
}

/// <summary>
/// 转换人民币大写
/// </summary>
/// <param name="input">数字输入</param>
  /// <returns>大写金额</returns>
public static string ToSuperRMB(ulong input)
{
return ToSuperRMB(new decimal(input));
}

/// <summary>
/// 转换人民币大写
/// </summary>
/// <param name="input">数字输入</param>
  /// <returns>大写金额</returns>
public static string ToSuperRMB(uint input)
{
return ToSuperRMB(new decimal(input));
}

/// <summary>
/// 转换人民币大写
/// </summary>
/// <param name="input">数字输入</param>
  /// <returns>大写金额</returns>
public static string ToSuperRMB(long input)
{
return ToSuperRMB(new decimal(input));
}

/// <summary>
/// 转换人民币大写
/// </summary>
/// <param name="input">数字输入</param>
  /// <returns>大写金额</returns>
public static string ToSuperRMB(int[] input)
{
return ToSuperRMB(new decimal(input));
}

/// <summary>
/// 转换人民币大写
/// </summary>
/// <param name="input">数字输入</param>
  /// <returns>大写金额</returns>
public static string ToSuperRMB(int input)
{
return ToSuperRMB(new decimal(input));
}

/// <summary>
/// 转换人民币大写
/// </summary>
/// <param name="input">数字输入</param>
  /// <returns>大写金额</returns>
public static string ToSuperRMB(float input)
{
return ToSuperRMB(new decimal(input));
}

/// <summary>
/// 转换人民币大写
/// </summary>
/// <param name="input">数字输入</param>
  /// <returns>大写金额</returns>
public static string ToSuperRMB(double input)
{
return ToSuperRMB(new decimal(input));
}

/// <summary>
/// 转换人民币大写
/// </summary>
/// <param name="input">数字输入</param>
  /// <returns>大写金额</returns>
public static string ToSuperRMB(decimal input)
{
var n = "零壹贰叁肆伍陆柒捌玖";
var u = "仟佰拾京仟佰拾吉仟佰拾兆仟佰拾億仟佰拾萬仟佰拾圆角分厘毫";//"仟佰拾京仟佰拾吉仟佰拾兆仟佰拾亿仟佰拾万仟佰拾圆角分厘毫"
var m = input;
if (m > decimal.Zero)
m *= 10000M;
else
m *= -10000M;
var t = m.ToString("0");
if (t == "0")
return "零圆整";

if (t.Length > u.Length)
throw new ArgumentOutOfRangeException();

u = u.Substring(u.Length - t.Length);
for (var i = t.Length - 1; i >= 0; i--)
t = t.Remove(i) + n[t[i] - '0'] + u[i] + t.Substring(i + 1);
t = Regex.Replace(t, "零+[^圆萬億兆吉京]", "零", RegexOptions.Compiled); //t = "壹仟零佰零拾零京叁仟零佰伍拾贰吉零仟零佰零拾零兆叁仟伍佰贰拾零億肆仟零佰贰拾零萬零仟零佰零拾伍圆壹角零分零厘伍毫";
t = Regex.Replace(t, "零{2,}", "零", RegexOptions.Compiled); //t = "壹仟零零零京叁仟零伍拾贰吉零零零零兆叁仟伍佰贰拾零億肆仟零贰拾零萬零零零伍圆壹角零零伍毫"
t = Regex.Replace(t, "零+([圆萬億兆吉京])", "$1", RegexOptions.Compiled); //t = "壹仟零京叁仟零伍拾贰吉零兆叁仟伍佰贰拾零億肆仟零贰拾零萬零伍圆壹角零伍毫"
t = Regex.Replace(t, "([萬億兆吉京])[萬億兆吉京]+", "$1", RegexOptions.Compiled); //t = "壹仟京叁仟零伍拾贰吉兆叁仟伍佰贰拾億肆仟零贰拾萬零伍圆壹角零伍毫"
t = Regex.Replace(t, "^[萬億兆吉京]+", string.Empty, RegexOptions.Compiled); //"壹仟京叁仟零伍拾贰吉叁仟伍佰贰拾億肆仟零贰拾萬零伍圆壹角零伍毫"
if (t[0] == '零')
t = t.Substring(1);
if (t[t.Length - 1] == '零')
t = t.Remove(t.Length - 1);
if (t[t.Length - 1] == '圆')
t = t + "整";
if (input >= decimal.Zero)
return t;

return "負" + t;////负
}

NET 人民币大写的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. JS 人民币大写

    /***** HongShijin** Me@HongShijin.com** 2014-10-15 9:13:00.00000** text/javascript***/ (function ($) ...

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

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

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

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

随机推荐

  1. 你真的用上keepalive了吗

    转自http://qa.blog.163.com/blog/static/19014700220134771052763/ Keep-Alive即俗称的长连接,使客户端到服务端建立的连接持续有效,当对 ...

  2. OpenSuSE查看指定软件包是否安装(OpenSuSE使用RPM作为默认的软件包维护管理工具)

    suse 是 zypper se xxxxx 是搜索软件包 (查看已经安装的 软件包是否已经安装)

  3. OC中NSString 的常用方法

    NSString *str1 = @"BeiJing"; NSString *str2 = @"beijing"; //全部转为大写 NSLog(@" ...

  4. 自己动手写处理器之第四阶段(1)——第一条指令ori的实现

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第11篇,我尽量每周四篇 第4章 第一条指令ori的实现 前面几章介绍了非常多预备知识,也描绘了即将要实现的OpenMIPS处 ...

  5. 求链表的倒数第k个节点

    问题描述:给定一个链表的头节点,求出链表的倒数第k个节点. 分析:这是链表里的经典问题,存在多种解法,下面给大家分享下我的想法. 解法一:很直观的一种做法是从头到尾扫描链表,然后求倒数第k个,但是由于 ...

  6. ZCTF-ARM64-Re300

    Re300-arm64     是一个64位的ARM程序.使用IDA加载,蹦出来这个框框,就是说IDA6.6还没有对ARM64位的程序实现relocation的分析.     就是由于这个,所以连对l ...

  7. RadioButtonList选择事件onclick

    <asp:RadioButtonList ID="rbtnFInvoiceType" runat="server" onclick="check ...

  8. C# Web对文件的管理

    /// <summary> /// 创建新文件 /// </summary> /// <param name="parentPath">文件路径 ...

  9. (原)前端知识杂烩(meta系列)

    更新于 20160831 1. meta 移动端头文件设置 (一般情况下,逐条复制放在头部就可以了) 1.1 强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏 ...

  10. 枚举基类Enum详解

    本文主要是对枚举类型的基类Enum类做一个介绍: 首先,Enum类位于java.lang包下,根据类的介绍可以发现,Enum类是Java中所有枚举类的父类,将枚举作为一个set或者Map的keys来使 ...