数字大小写转换
C#、winfrom金额数字大小写转换
作者:张国军_Suger
开发工具与关键技术:Visual Studio 2015、C#、.NET、winfrom
很多时候我们比如金额就需要对数字的小写转换成大写模式,因此我查找了归纳了如下方法,希望能帮到小伙伴。
实现截图::
实现代码::
#region 数字小写转大写
public static string CNumToCh(string X)
{
//数字转换为中文后的数组
string[] num = new string[]
{
"零", "壹", "贰", "叁", "肆",
"伍", "陆", "柒", "捌", "玖"
};
//为数字位数建立一个位数组
string[] digit = new string[]
{
"", "拾", "佰", "仟"
};
//为数字单位建立一个单位数组
string[] units = new string[]
{
"", "万", "亿", "万亿"
};
string returnValue = ""; //返回值
int finger = 0; //字符位置指针
int m = X.Length % 4; //取模
int k = 0;
if (m > 0)
{
k = X.Length / 4 + 1;
}
else
{
k = X.Length / 4;
}
//外层循环,四位一组,每组最后加上单位: ",万亿,",",亿,",",万,"
for (int i = k; i > 0; i--)
{
int L = 4;
if (i == k && m != 0)
L = m;
//得到一组四位数
string four = X.substring(finger, L);
int l = four.Length;
//内层循环在该组中的每一位数上循环
for (int j = 0; j < l; j++)
{
//处理组中的每一位数加上所在的位
int n = Convert.ToInt32(four.Substring(j, 1));
if (n == 0)
{
if (j < l - 1
&& Convert.ToInt32(four.Substring(j + 1, 1)) > 0
&& !returnValue.EndsWith(num[n]))
{
returnValue += num[n];
}
}
else
{
if (!(n == 1
&& (returnValue.EndsWith(num[0]) | returnValue.Length == 0)
&& j == l - 2))
{
returnValue += num[n];
returnValue += digit[l - j - 1];
}
}
}
finger += L;
//每组最后加上一个单位:",万,",",亿," 等
if (i < k) //如果不是最高位的一组
{
if (Convert.ToInt32(four) != 0)
{
//如果所有4位不全是0则加上单位",万,",",亿,"等
returnValue += units[i - 1];
}
}
else
{
//处理最高位的一组,最后必须加上单位
returnValue += units[i - 1];
}
}
returnValue += "万元整";
return returnValue;
}
#endregion
相关阅读
C#连接数据库时Appsettings 与connectionStrings的区
一、.Appsettings与connectionStrings的区别,它俩都是App.config中的两个元素;AppSettings是ASP.NET1.1时期用的,在.NET Framework
这几天博主花了4天时间去学习,整理Socket通信。大致懂了一点,现在我来总结一下关于C#Socket通信的原理首先我们要知道网络中的进程
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System
http://www.cnblogs.com/sntetwt/archive/2011/03/26/1996055.htmlC#编程规范第一章 概述. 5术语定义. 5Pascal 大小写. 5Camel
关于C# PropertyGrid的用法没有找到,找到一个C++的用法。模仿着使用了一下,感觉挺不错,分享一下。基本用法:拖个PropertyGrid,绑定一个