[收藏|转贴]货币金额大写转换库(C#)
货币金额大写转换库
http://www.vckbase.com/bbs/prime/viewprime.asp?id=576
// 货币金额大写转换库 Money2String.dll
// 静态中文转换方法 String GetCnString(String MoneyString)
// 最大转化金额 9999999999999999.99 (16位整数位,2位小数位)
// 方法返回值 转换成功则返回非零长字串,否则返回零长字串
// 静态英文转换方法 String GetEnString(String MoneyString)
// 最大转化金额 999999999999999.99 (15位整数位,2位小数位)
// 方法返回值 转换成功则返回非零长字串,否则返回零长字串
// 程序设计 xlFancy 版本 2003.03.18.22 - 2003.04.09
// 邮箱地址 xlfancy@21cn.com
using System;
namespace Money2String
{
public class Money2String
{
private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖";
private static readonly String cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";
private static readonly String[] enSmallNumber = {"","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","TEN","ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN"};
private static readonly String[] enLargeNumber = {"TWENTY","THIRTY","FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY"};
private static readonly String[] enUnit = {"","THOUSAND","MILLION","BILLION","TRILLION"};
// 以下是货币金额中文大写转换方法
public static String GetCnString(String MoneyString)
{
String [] tmpString = MoneyString.Split('.');
String intString = MoneyString; // 默认为整数
String decString = ""; // 保存小数部分字串
String rmbCapital = ""; // 保存中文大写字串
int k;
int j;
int n;
if (tmpString.Length>1)
{
intString = tmpString[0]; // 取整数部分
decString = tmpString[1]; // 取小数部分
}
decString += "00";
decString = decString.Substring (0,2); // 保留两位小数位
intString += decString;
try
{
k = intString.Length -1;
if (k>0 && k<18)
{
for (int i=0;i<=k;i++)
{
j=(int)intString-48;
// rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i]; // 供调试用的直接转换
n = i+1 >= k ? (int)intString[k]-48int)intString[i+1]-48; // 等效于 if( ){ }else{ }
if (j==0)
{
if(k-i==2 || k-i==6 || k-i==10 || k-i==14)
{
rmbCapital += cnUnit[k-i];
}
else
{
if (n != 0)
{
rmbCapital += cnNumber[j];
}
}
}
else
{
rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i];
}
}
rmbCapital = rmbCapital.Replace ("兆亿万","兆");
rmbCapital = rmbCapital.Replace ("兆亿","兆");
rmbCapital = rmbCapital.Replace ("亿万","亿");
rmbCapital = rmbCapital.TrimStart('元');
rmbCapital = rmbCapital.TrimStart('零');
return rmbCapital;
}
else
{
return ""; // 超出转换范围时,返回零长字串
}
}
catch
{
return ""; // 含有非数值字符时,返回零长字串
}
}
// 以下是货币金额英文大写转换方法
public static String GetEnString(String MoneyString)
{
String [] tmpString = MoneyString.Split('.');
String intString = MoneyString; // 默认为整数
String decString = ""; // 保存小数部分字串
String engCapital = ""; // 保存英文大写字串
String strBuff1;
String strBuff2;
String strBuff3;
int curPoint;
int i1;
int i2;
int i3;
int k;
int n;
if (tmpString.Length >1)
{
intString = tmpString[0]; // 取整数部分
decString = tmpString[1]; // 取小数部分
}
decString += "00";
decString = decString.Substring (0,2); // 保留两位小数位
try
{
// 以下处理整数部分
curPoint = intString.Length-1;
if (curPoint>=0 && curPoint<15)
{
k = 0;
while(curPoint>=0)
{
strBuff1 = "";
strBuff2 = "";
strBuff3 = "";
if (curPoint>=2)
{
n=int.Parse(intString.Substring(curPoint-2,3));
if (n !=0)
{
i1 = n/100; // 取佰位数值
i2 = (n-i1*100)/10; // 取拾位数值
i3 = n-i1*100-i2*10; // 取个位数值
if (i1 !=0)
{
strBuff1 = enSmallNumber[i1] + " HUNDRED ";
}
if (i2!=0)
{
if (i2==1)
{
strBuff2 = enSmallNumber[i2*10+i3] + " ";
}
else
{
strBuff2 = enLargeNumber[i2-2] + " ";
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
}
else
{
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
engCapital = strBuff1 + strBuff2 + strBuff3 + enUnit[k] + " " + engCapital;
}
}
else
{
n = int.Parse(intString.Substring(0,curPoint+1));
if (n !=0)
{
i2 = n/10; // 取拾位数值
i3 = n-i2*10; // 取个位数值
if (i2!=0)
{
if (i2==1)
{
strBuff2 = enSmallNumber[i2*10+i3] + " ";
}
else
{
strBuff2 = enLargeNumber[i2-2] + " ";
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
}
else
{
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
engCapital = strBuff2 + strBuff3 + enUnit[k] + " " + engCapital;
}
}
++k;
curPoint -= 3;
}
engCapital = engCapital.TrimEnd();
}
// 以下处理小数部分
strBuff2 = "";
strBuff3 = "";
n = int.Parse(decString);
if (n !=0)
{
i2 = n/10; // 取拾位数值
i3 = n-i2*10; // 取个位数值
if (i2!=0)
{
if (i2==1)
{
strBuff2 = enSmallNumber[i2*10+i3] + " ";
}
else
{
strBuff2 = enLargeNumber[i2-2] + " ";
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
}
else
{
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
// 将小数字串追加到整数字串后
if (engCapital.Length>0)
{
engCapital = engCapital + " AND CENTS " + strBuff2+strBuff3; // 有整数部分时
}
else
{
engCapital = "CENTS " + strBuff2 + strBuff3; // 只有小数部分时
}
}
engCapital = engCapital.TrimEnd();
return engCapital;
}
catch
{
return ""; // 含非数字字符时,返回零长字串
}
}
}
}
[收藏|转贴]货币金额大写转换库(C#)相关推荐
- 【Java】ChineseCurrencyUtils(货币金额大写转换工具类)
货币金额大写转换工具类 import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalForm ...
- JS货币金额大写转换,1.01=壹元零壹分
代码 对比其他网络分享的代码,此方法新增了零 如1.01为壹元零壹分而不是[壹元壹分] function digitUppercase(n) {var fraction = ['角', '分'];va ...
- 中文金额大写转换处理
2019独角兽企业重金招聘Python工程师标准>>> /** 金额单位(整数) */private final static String[] PRCE_UNIT = new St ...
- 【整理】SAP货币汇率转换
货币汇率转换Demo 一.说明 汇率维护在ERP中可以使用事务代码OB07或者OB08,每次不同币别的汇率更改在正式生产系统中都会新创建一条记录,保存之后会存储在表TCURR中,可以通过函数CONVE ...
- libiconv字符集转换库使用方法
在软件开发中不可避免的需要用到字符集的转换:转换方法很多如自行编写字符集转换库.利用Windows提供之MultiByteToWideChar函数等:自行编写相对周期较长,而利用MultiByteTo ...
- Java版 数字金额大写转换
需求:读入一个浮点数值,将其转化为中文金额的大写形式.如123.45,转化为:壹佰贰拾叁元肆角伍分. 以下是各种情况要完善: 1. 当金额为整数,只表示整数部分,省略小数部分,并添加"整&q ...
- libiconv字符集转换库在C#中的使用
<libiconv字符集转换库使用方法>一文中说到了libiconv可以实现不同字符集的转换.比如GBK转BIG5等.在项目中因为需要,找到这个库.可是这个库在C#中没有很好的支持.不过, ...
- 大数值金额大写转换(C语言)
关于大数值金额大写转换,在财务管理的应用方面没什么意义.一般来说,千亿级,万亿级的数值就够了.因为在国家级层面是以亿为单位的,也就表达为千万亿,万万亿.在企业层面数值金额转换设置到千亿.万亿就行了.大 ...
- 数字金额大写转换Java工具类
Mark一下: 摘取自 若依框架com.hanhua.common.core.text.Convert /*** 数字金额大写转换 先写个完整的然后将如零拾替换成零** @param n 数字* @r ...
最新文章
- 汇编寄存器(内存访问)基础知识之三---mov指令
- 虚拟机上的ubuntu安装vmware tools
- javaweb学习总结(十四)——JSP原理
- 51Nod 1102 面积最大的矩形 +1272 最大距离 单调栈
- 【转】我的第一个Python小程序
- 7-19 求链式线性表的倒数第K项 (20 分)(思路分析+极简代码+超容易理解)
- kubelet内存异常分析
- C#常用的文件操作 (转)
- 教师使用计算机职责,教师办公室计算机使用制度
- java final定义_Java中final关键字的用法
- ASP.NET缓存中Cache过期的三种策略
- 逆向工程之-数值原码和补码
- JSPSSM316的网上水果生鲜销售商城系统java毕业设计成品源码介绍
- kaggle--猫狗数据集分类
- NoClassDefFoundError: Could not initialize class org.apache.kafka.common.record.Compressio
- 计算机ppt上超链接咋设置,ppt查看器_ppt图片链接接怎么设置打开方式是图片查看器?_ppt超链接打开方式...
- VMware Ubuntu18.10与Win10共享文件夹
- 百度广告屏蔽及游戏推广屏蔽
- 在Windows下批量修改文件后缀(ren命令-rename)
- 微信浏览器字体调整 PHP,微信h5禁止微信内置浏览器调整字体大小-爬坑
热门文章
- 立体匹配——A Large Dataset to Train Convolutional Networks for Disparity, Optical Flow, and Scene Flow Es
- 长平之战后的秦赵又一次决战——邯郸保卫战
- 钉钉小程序编译时提示 ‘dd is not defined‘
- ABAP: 循环加和查询
- mysql-删除语句汇总
- PowerShell : 如何设置输出颜色,Format-Color让黑乎乎的窗口丰富起来
- Android 智能遥控器源码,基于Android手机的智能遥控器设计
- SAP CRM BOL collection find_by_property
- 升级iOS CocoaPods 版本
- 1267 'Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_gener