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) ...
随机推荐
- 函数模板的载体-HPP
在C++中,我们通常将声明放在.h头文件中,将具体的实现代码放在.cpp文件中.但是函数模板通常不这么做,函数模板是将其声明和实现都放在.hpp文件中.hpp是Header Plus Plus的缩写, ...
- 【LeetCode练习题】Merge k Sorted Lists
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- source insight 下看不了utf-8中文字符
utf-8中文在source insight中显示为乱码,写了一个简单脚本,在linux下将代码转换为GBK格式,然后在source insight下正常查看. #!/bin/sh function ...
- 全国计算机等级考试二级教程-C语言程序设计_第5章_循环结构
for循环结构的嵌套 外层循环每循环一次,内层循环会完整循环一次. 外层循环是竖. 内层循环是横. for, do...while, while的选择: 如果有固定次数,如阶乘! ,判断素数,用 fo ...
- SharePoint Search之(一):创建Search服务应用程序
计划写一个关于怎样使用SharePoint Search的系列,包括下面几个方面: (一)创建Search Service Application (二)持续爬网(continues crawl) ( ...
- [Android]APK程序卸载二次确认的实现
严正声明 本人本着技术开放,思想分享的目的,撰写本文.文章仅供参考之用,请勿使之于非法或有害于社会和谐之用. Sodino 2011-01-24 Android上能不能实现卸载时提示呢, ...
- docker相关配置
一.概述: 1.centos7下,默认firewalld为防火墙, systemctl status firewalld.service 2.关闭firewalld, systemctl stop f ...
- Excel 用row()函数 在Excel中自动添加序号,
1.如图 2.用if条件根据产品名称判断是否有值进而序号自动添加 If(G9="","",Row()-8)
- JSON 解析第三方框架
常见的 JSON 解析第三方框架 JSONKit(最快) SBJson TouchJSON 以上三个框架的性能依次降低! 介绍 JSONKit 第三方框架的目的 JSON 的解析并不是表面上那么简单 ...
- WindowsForm 记事本 对话框
textbox: 属性: text:文本 selectedtext:获取或设置选中文本 canundo:是否能够撤销 方法: ...