C#通用类库--数字转为人民币汉字大写表示
//作用:数字转换为人民币大写
//作者:刘典武
//时间:2010-12-04
using System;
using System.Collections.Generic;
using System.Text;
namespace Ecan
{
public class EcanRMB
{
/// <summary>
/// 转换人民币大小金额
/// </summary>
/// <param name="num">金额</param>
/// <returns>返回大写形式</returns>
public string CmycurD(decimal num)
{
string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字
string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
string str3 = ""; //从原num值中取出的值
string str4 = ""; //数字的字符串形式
string str5 = ""; //人民币大写金额形式
int i; //循环变量
int j; //num的值乘以100的字符串长度
string ch1 = ""; //数字的汉语读法
string ch2 = ""; //数字位的汉字读法
int nzero = 0; //用来计算连续的零值是几个
int temp; //从原num值中取出的值
num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数
str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式
j = str4.Length; //找出最高位
if (j > 15) { return "溢出"; }
str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
//循环取出每一位需要转换的值
for (i = 0; i < j; i++)
{
str3 = str4.Substring(i, 1); //取出需转换的某一位的值
temp = Convert.ToInt32(str3); //转换为数字
if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
{
//当所取位数不为元、万、亿、万亿上的数字时
if (str3 == "0")
{
ch1 = "";
ch2 = "";
nzero = nzero + 1;
}
else
{
if (str3 != "0" && nzero != 0)
{
ch1 = "零" + str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
ch1 = str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
}
}
else
{
//该位是万亿,亿,万,元位等关键位
if (str3 != "0" && nzero != 0)
{
ch1 = "零" + str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
if (str3 != "0" && nzero == 0)
{
ch1 = str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
if (str3 == "0" && nzero >= 3)
{
ch1 = "";
ch2 = "";
nzero = nzero + 1;
}
else
{
if (j >= 11)
{
ch1 = "";
nzero = nzero + 1;
}
else
{
ch1 = "";
ch2 = str2.Substring(i, 1);
nzero = nzero + 1;
}
}
}
}
}
if (i == (j - 11) || i == (j - 3))
{
//如果该位是亿位或元位,则必须写上
ch2 = str2.Substring(i, 1);
}
str5 = str5 + ch1 + ch2;
if (i == j - 1 && str3 == "0")
{
//最后一位(分)为0时,加上“整”
str5 = str5 + '整';
}
}
if (num == 0)
{
str5 = "零元整";
}
return str5;
}
/**/
/// <summary>
/// 一个重载,将字符串先转换成数字在调用CmycurD(decimal num)
/// </summary>
/// <param name="num">用户输入的金额,字符串形式未转成decimal</param>
/// <returns></returns>
public string CmycurD(string numstr)
{
try
{
decimal num = Convert.ToDecimal(numstr);
return CmycurD(num);
}
catch
{
return "非数字形式!";
}
}
}
}
基本用法:
MessageBox.Show ( rmb.CmycurD("4568589647.34"));
C#通用类库--数字转为人民币汉字大写表示相关推荐
- C#通用类库--数字转为人民币汉字大写表示可负大写
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Shan ...
- Python实现数字转人民币(大写汉字)源代码
Python实现数字转人民币(大写汉字)源代码,运行截图: 完整程序代码 import warnings from decimal import Decimaldef cncurrency(value ...
- 零基础实操 | Python实现数字转人民币(大写汉字)源代码
大家好,我是吒吒. 我们的工作中遇到一些问题,不依靠工具的话,改起来真的超级麻烦,还会遗漏.有个小伙伴提出怎么把数字转成人民币(大写汉字),Python还真的可以做到,并且挺简单的,新手都可以操作.下 ...
- Excel数字 转 人民币 繁体大写
第一种方法:通过函数嵌套实现 数字转人民币大写形式的公式是: =IF(B1<0,"金额为负无效", (IF(OR(B1=0,B1=""),"(人 ...
- java 数字转化为汉字_工具类_java 数字转化为汉字大写
public class Num2Rmb { private String[] hanArr = { "零", "壹", "贰", &quo ...
- Java数字转换为人民币的大写
工具类: import java.math.BigDecimal;/*** 数字转换为人民币的大写*/ public class NumberToCN {/*** 汉语中数字大写*/private s ...
- 数字转换为人民币的大写(复制直接用)
Java中把数字转换为人民币大写格式 import java.math.BigDecimal;public class NumberToCN {/*** 汉语中数字大写*/private static ...
- 数字转人民币(大写汉字)读法(Python经典编程案例)
数字转人民币读法 import warnings from decimal import Decimaldef cncurrency(value, capital=True, prefix=False ...
- java实现数字转换人民币中文大写工具
业务场景: 1.在人事业务系统开发的报表打印文书时经常需要将人民币数值转换为大写, 所以用java写了一个通用的大写转换函数. 为了更加方便调用函数的参数使用字符串类型.例如:825.45 转换后:捌 ...
最新文章
- java代码。继承。。。很戳我的心啊。。不太懂。super的真正用法
- python 原始数据输出函数 repr
- 数据挖掘实验报告-关联规则算法实验
- Java黑皮书课后题第4章:4.19(商业:检测ISBN-10)改写编程练习题3.9,将ISBN号作为一个字符串输入
- 小白开学Asp.Net Core 《八》
- C++使用Json作为数据包装格式的通信
- Python是什么类型的语言?
- BootstrapTable 列隐藏
- SSM错误:Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletReque
- c#发送邮件,可发送多个附件
- Eclipse+MyEclipse+Tomcat下配置建立Web Project
- 解决Linux下DNS配置重启失效问题
- PHP开源CMS介绍
- 阿里巴巴图片滚动代码html,阿里旺铺装修代码的fx.roll滚动特效组件使用详解及HTML代码示例...
- java技术架构选型方案报告.pdf,来啦,2020开源报告!
- python音乐推荐系统的设计与实现_个性化音乐推荐系统设计与实现
- MySQL中MGR中SECONDARY节点磁盘满,导致mysqld进程被OOM Killed
- 精益软件开发(Lean Software Development)
- 开根号的笔算算法图解_用笔算开根号
- Java Excel 导出为 PDF