车神

专注MS.NET技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

将货币格式由小写转换成大写的c#类

Posted on 2007-07-04 15:21  车神  阅读(497)  评论(0)    收藏  举报
我们经常要把货币格式转换为大写,在网上找了一些c#的类,总有这样和那样的问题,最后找到了一段javascript代码,我转换成了c#代码,经过测试,没有问题,转换成功
public string GetCapitalization(double Money)
{
string CN_ZERO = "";
string CN_ONE = "";
string CN_TWO = "";
string CN_THREE = "";
string CN_FOUR = "";
string CN_FIVE = "";
string CN_SIX = "";
string CN_SEVEN = "";
string CN_EIGHT = "";
string CN_NINE = "";
string CN_TEN = "";
string CN_HUNDRED = "";
string CN_THOUSAND = "";
string CN_TEN_THOUSAND = "";
string CN_HUNDRED_MILLION = "亿";
string CN_SYMBOL = "";//人民币
string **_*OLLAR = "";
string CN_TEN_CENT = "";
string CN_CENT = "";
string CN_INTEGER = "";
string CN_Negative = "";
//变量
string integral; //整数部分
string Float; //小数部分
string outputCharacters; //大写金额
int zeroCount;
int i;
int p;
string d;
int quotient;
int modulus;

string currencyDigits = Money.ToString("0.00");
string[] parts = currencyDigits.Split('.');
integral 
= parts[0];
Float 
= parts[1];

string[] digits = {CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE};
string[] radices = {"", CN_TEN, CN_HUNDRED, CN_THOUSAND};
string[] bigRadices = {"", CN_TEN_THOUSAND, CN_HUNDRED_MILLION};
string[] decimals = {CN_TEN_CENT, CN_CENT};
//开始转换
outputCharacters = "";
//整数的转换
if (int.Parse(integral) > 0
{
zeroCount 
= 0;
for (i = 0; i < integral.Length; i++
{
= integral.Length - i - 1;
= integral.Substring(i, 1);
quotient 
= p / 4;
modulus 
= p % 4;
if (d == "0"
{
zeroCount
++;
}

else 
{
if (zeroCount > 0)
{
outputCharacters 
+= digits[0];
}

zeroCount 
= 0;
outputCharacters 
+= digits[int.Parse(d)] + radices[modulus];
}

if (modulus == 0 && zeroCount < 4
{
outputCharacters 
+= bigRadices[quotient];
}

}

outputCharacters 
+= **_*OLLAR;
}

else if(int.Parse(integral) < 0)
{
zeroCount 
= 0;
outputCharacters 
+= CN_Negative;
integral 
= integral.Substring(1,integral.Length);
for (i = 0; i < integral.Length; i++
{
= integral.Length - i - 1;
= integral.Substring(i, 1);
quotient 
= p / 4;
modulus 
= p % 4;
if (d == "0"
{
zeroCount
++;
}

else 
{
if (zeroCount > 0)
{
outputCharacters 
+= digits[0];
}

zeroCount 
= 0;
outputCharacters 
+= digits[int.Parse(d)] + radices[modulus];
}

if (modulus == 0 && zeroCount < 4
{
outputCharacters 
+= bigRadices[quotient];
}

}

outputCharacters 
+= **_*OLLAR;
}

//小数的转换
if (Float != ""
{
for (i = 0; i < Float.Length; i++
{
= Float.Substring(i, 1);
if (d != "0"
{
outputCharacters 
+= digits[int.Parse(d)] + decimals[i];
}

}

}

if (outputCharacters == ""
{
outputCharacters 
= CN_ZERO + **_*OLLAR;
}


if (int.Parse(Float) == 0
{
outputCharacters 
+= CN_INTEGER;
}

outputCharacters 
= CN_SYMBOL + outputCharacters;
return outputCharacters;
}