NET 人民币大写
/***
** 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 人民币大写的更多相关文章
- 返回人民币大写方式(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 以内的人民币大写转换,精确到 ...
- JS 人民币大写
/***** HongShijin** Me@HongShijin.com** 2014-10-15 9:13:00.00000** text/javascript***/ (function ($) ...
- js 将数字转换成人民币大写的方法
//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...
- 数字转人民币大写(SQL SERVER)
--数字转人民币大写NumToRMB ---新建方法create FUNCTION dbo.NumToRMB (@num numeric(14,5)) RETURNS varchar(100) ...
随机推荐
- UML_静态图
类图 类图是描述类,接口,协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图的基础上,可以使用状态图,协作图,组件图和配置图等进一步描述系统其他方面 ...
- oracle error info
1,oracle jdbc HTTP Status 500 - Incorrect result size: expected 1, actual 0 2015-03-31 00:03:58,250 ...
- Web服务器压力测试一例
近期部门新上线一个服务,我们使用ab和locust分别测试 目前项目属于demo阶段,对访问量的支持不要求太高,我们暂且设定在500请求,20并发 工具介绍 ab ab全称为:Apache HTTP ...
- MVC模式下My97DatePicker日期控件引用注意事项
My97DatePicker日期控件之前在用webform模式开发的时候,只要 <script language="javascript" type="text/j ...
- SSCTF-PWN
前几天比赛的PWN题,简单写了下. PWN400 漏洞是一个数组越界访问造成的任意地址读写.在对数据排序后,对数据进行查询和更新时,可以访问到数组以外一个元素(4个字节). 程序中存在3种数据结构,第 ...
- chrome插件 postman 可以调用restful服务
chrome插件 postman 可以调用restful服务
- Android中view的事件
view:top.left.right.bottom,相对于parent的位置参数,获取通过get*()来获取.width=right-left.height=bottom-top.x=left+tr ...
- Visual C++ 64bit应用程序项目设置
Visual Studio 2005 This topic describes how to set up C++ applications to target 64-bit platforms us ...
- shell ps1 提示设置
PS1="\[\033[01;37m\]\u\[\033[00m\]@\[\033[01;31m\]localhost \t\[\033[00m\]:\[\033[01;35m\]\w\[\ ...
- PHP Version之PHP5.2.x到5.3.x
不向下兼容的变化 1. 在5.3的所有绑定扩展中应用了新的内部参数解析API,当给函数传递不兼容的参数时将返回NULL,但有些例外,比如函数get_class()在出现错误时返回FALSE 2. ...