![]() |
#2
hebingbing2008-04-22 17:03
|
今天在做账单,要这个功能的函数。
自己写了一个,给大家分享一下。代码比较丑,有高手顺便改改么?
我这个现在支持int的2位的小数都可以。可是公司的人告诉我要改下,如果有3位小数就有问题了。我的确汗中。
一下是代码,大家有兴趣玩玩看看用用哈!

protected string FormatAmount(string amount)
{
string str = "";
char[] TOBIG = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
char[] TOUNIT = { '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟' };
if (amount[amount.Length - 3] == '.')
{
for (int i = 0; i < amount.Length - 3; i++)
{
int j = amount.Length - 4 - i;
if (amount[i] == '0')
{
for (int k = i; k < amount.Length - 1; k++)
{
if (amount[i + 1] == '0' || amount[i + 1] == '.')
i++;
}
if (i == amount.Length - 1)
str += "整";
else
str += TOBIG[0];
}
else
{
str += TOBIG[int.Parse(amount[i].ToString())].ToString();
str += TOUNIT[j].ToString();
}
}
if (amount[amount.Length - 2] != '0')
str += TOBIG[int.Parse(amount[amount.Length - 2].ToString())].ToString() + "角";
if (amount[amount.Length - 1] != '0')
str += TOBIG[int.Parse(amount[amount.Length - 1].ToString())].ToString() + "分";
}
else
{
for (int i = 0; i < amount.Length; i++)
{
int j = amount.Length - 1 - i;
if (amount[i] == '0')
{
if (amount[i + 1] == '0')
i++;
if (i == amount.Length - 1)
str += "整";
else
str += TOBIG[0];
}
else
{
str += TOBIG[int.Parse(amount[i].ToString())].ToString();
str += TOUNIT[j].ToString();
}
}
}
return str;
}
{
string str = "";
char[] TOBIG = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
char[] TOUNIT = { '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟' };
if (amount[amount.Length - 3] == '.')
{
for (int i = 0; i < amount.Length - 3; i++)
{
int j = amount.Length - 4 - i;
if (amount[i] == '0')
{
for (int k = i; k < amount.Length - 1; k++)
{
if (amount[i + 1] == '0' || amount[i + 1] == '.')
i++;
}
if (i == amount.Length - 1)
str += "整";
else
str += TOBIG[0];
}
else
{
str += TOBIG[int.Parse(amount[i].ToString())].ToString();
str += TOUNIT[j].ToString();
}
}
if (amount[amount.Length - 2] != '0')
str += TOBIG[int.Parse(amount[amount.Length - 2].ToString())].ToString() + "角";
if (amount[amount.Length - 1] != '0')
str += TOBIG[int.Parse(amount[amount.Length - 1].ToString())].ToString() + "分";
}
else
{
for (int i = 0; i < amount.Length; i++)
{
int j = amount.Length - 1 - i;
if (amount[i] == '0')
{
if (amount[i + 1] == '0')
i++;
if (i == amount.Length - 1)
str += "整";
else
str += TOBIG[0];
}
else
{
str += TOBIG[int.Parse(amount[i].ToString())].ToString();
str += TOUNIT[j].ToString();
}
}
}
return str;
}
谢谢各位看了!
[[it] 本帖最后由 走刀口→超 于 2008-4-23 11:14 编辑 [/it]]