C#人民币金额大写转换
人民币金额大小写转换,三行代码
//完善了一下查询到的方法,支持小数,保留2位小数
- public string NumGetStr(double Num)
- {
- string[] DX_SZ = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };//大写数字
- string[] DX_DW = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" };
- string[] DX_XSDS = { "角", "分" };//大些小数单位
- if (Num == 0) return DX_SZ[0];
- Boolean IsXS_bool = false;//是否小数
- string NumStr;//整个数字字符串
- string NumStr_Zs;//整数部分
- string NumSr_Xs = "";//小数部分
- string NumStr_R = "";//返回的字符串
- NumStr = Num.ToString();
- NumStr_Zs = NumStr;
- if (NumStr_Zs.Contains("."))
- {
- NumStr = Math.Round(Num, 2).ToString();
- NumStr_Zs = NumStr.Substring(0, NumStr.IndexOf("."));
- NumSr_Xs = NumStr.Substring((NumStr.IndexOf(".") + 1), (NumStr.Length - NumStr.IndexOf(".") - 1));
- IsXS_bool = true;
- }
- int k = 0;
- Boolean IsZeor = false;//整数中间连续0的情况
- for (int i = 0; i < NumStr_Zs.Length; i++) //整数
- {
- int j = int.Parse(NumStr_Zs.Substring(i, 1));
- if (j != 0)
- {
- NumStr_R += DX_SZ[j] + DX_DW[NumStr_Zs.Length - i - 1];
- IsZeor = false; //没有连续0
- }
- else if (j == 0)
- {
- k++;
- if (!IsZeor && !(NumStr_Zs.Length == i + 1)) //等于0不是最后一位,连续0取一次
- {
- //有问题
- if (NumStr_Zs.Length - i - 1 >= 4 && NumStr_Zs.Length - i - 1<=6)
- NumStr_R += DX_DW[4] + "零";
- else
- if (NumStr_Zs.Length - i - 1 > 7)
- NumStr_R += DX_DW[8] + "零";
- else
- NumStr_R += "零";
- IsZeor = true;
- }
- if (NumStr_Zs.Length == i + 1)// 等于0且是最后一位 变成 XX元整
- NumStr_R += DX_DW[NumStr_Zs.Length - i - 1];
- }
- }
- if (NumStr_Zs.Length>2 && k == NumStr_Zs.Length - 1)
- NumStr_R = NumStr_R.Remove(NumStr_R.IndexOf('零'), 1); //比如1000,10000元整的情况下 去0
- if (!IsXS_bool) return NumStr_R + "整"; //如果没有小数就返回
- else
- {
- for (int i = 0; i < NumSr_Xs.Length; i++)
- {
- int j = int.Parse(NumSr_Xs.Substring(i, 1));
- NumStr_R += DX_SZ[j] + DX_XSDS[NumSr_Xs.Length - i - 1];
- }
- }
- return NumStr_R;
- }
2016.6.16更新。
发现这么一段代码,我整个人都。。
- public static String ConvertToChinese(Decimal number)
- {
- var s = number.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
- var d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
- var r = Regex.Replace(d, ".", m => "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万亿兆京垓秭穰"[m.Value[0] - '-'].ToString());
- return r;
- }
上面那么一大段的这几句也可以实现 呵呵.. Interesting
正则真强大。
C#人民币金额大写转换的更多相关文章
- js浮点数计算问题 + 金额大写转换
一 js浮点数计算问题解决方案: 1.使用 NumberObject.toFixed(num) 方法 toFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 2.较精度计算浮点数 ...
- JS进行人民币大小写转换
//数字金额大写转换(可以处理整数,小数,负数) function upDigit() { digit=$("#digit").html(); n=digit.replace(/\ ...
- FastReport调用Delphi中的人民币大写转换自定义函数
FastReport调用Delphi中的人民币大写转换自定义函数 FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje ...
- JS数字金额大写转换
/** 数字金额大写转换(可以处理整数,小数,负数) */ var digitUppercase = function(n) { var fraction = ['角', '分']; var digi ...
- Java版 数字金额大写转换
需求:读入一个浮点数值,将其转化为中文金额的大写形式.如123.45,转化为:壹佰贰拾叁元肆角伍分. 以下是各种情况要完善: 1. 当金额为整数,只表示整数部分,省略小数部分,并添加“整”字.如123 ...
- python实现人民币大写转换
问题描述: 银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序. 在中文大写方式中,0到10以及100.1000.10000被依次表示为: 零 壹 贰 ...
- java实现人民币金额大写
在与财务相关的应用中,经常会用到人民币金额的大写,比如发票的打印程序. 本题的任务是:从键盘输入一个十亿以内的正整数(int类型),把它转换为人民币金额大写(不考虑用户输入错误的情况). 比如,用户输 ...
- 人民币大写金额转换C#方法
方法的代码如下: /// <summary> /// 人民币大写 /// </summary> /// <param name="input"> ...
- java人民币读法转换
实现浮点数转换成人民币读法字符串 编写一个程序,将浮点数转换成人民币读法字符串,例如,将1006.333转换为壹千零陆元叁角叁分. 题意分析: 将浮点数分成整数部分和小数部分,分开处理整数部分和小数部 ...
随机推荐
- POJ 3260 The Fewest Coins(完全背包+多重背包=混合背包)
题目代号:POJ 3260 题目链接:http://poj.org/problem?id=3260 The Fewest Coins Time Limit: 2000MS Memory Limit: ...
- go语言系列--前言
我为什么要学golang语言 绝不是一时兴起,也不是人云亦云,这是我规划了很久的事了. 我曾自学过C语言,C++语言,Python语言,可都学的不精,原因我想是不知道为了什么而学的,可是这就是缺少学习 ...
- (48)LINUX应用编程和网络编程之三Linux获取系统信息
3.3.1.关于时间的概念 3.3.1.1.GMT时间 (1)GMT是格林尼治时间,也就是格林尼治地区的当地之间. (2)GMT时间的意义?[用格林尼治的当地时间作为全球国际时间],用以描述全球性的事 ...
- JMS学习十(ActiveMQ支持的传输协议)
ActiveMQ提供了一种连接机制,这种连接机制使用传输连接器(TransportConnector)实现客户端与代理(client - to - broker)之间的通信. 网络连接器(networ ...
- Spring Data Jpa (三)定义查询方法
本章详细讲解如何利用方法名定义查询方法(Defining Query Methods) (1)定义查询方法的配置方法 由于Spring JPA Repository的实现原理是采用动态代理的机制,所以 ...
- python学习之路(23)
类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各 ...
- 正则表达式中 group groups区别
先看代码instance: 1 >>> a="123abc456" 2 >>> import re 3 >>> print(r ...
- legend3---laravel验证码使用
legend3---laravel验证码使用 一.总结 一句话总结: 1.先用composer下载好captcha扩展:配置好composer.json然后运行composer update 2.引入 ...
- Python可变数据类型list填坑一则
前提概要 最近写业务代码时遇到一个列表的坑,在此记录一下. 需求 现在有一个普通的rule列表: rule = [["ID",">",0]] 在其他地方经 ...
- Oracle数据库用户的密码过期问题处理
SQL> select username, user_id, account_status,expiry_date, profile from dba_users where username ...