admin 管理员组文章数量: 887021
[收藏
货币金额大写转换库
.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 ""; // 含非数字字符时,返回零长字串
}
}
}
}
本文标签: 收藏
版权声明:本文标题:[收藏 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687203336h75771.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论