大家能帮我看下吗,我写的这个有没有出错的情况。我这个只转换整数部分
//人民币大写转换
//零壹贰叁肆伍陆柒捌玖 拾佰仟万亿、元角分、零、整
//最多十六位整数,
private string rmbTranslate(string num)
{
//num = "3010020000.00";
// num = "3010020002.01";
// num = "3000000002.01";
string daxie = "零壹贰叁肆伍陆柒捌玖";
string integerPart = "整";
int decPointIndex = num.LastIndexOf('.');
if (decPointIndex < 0)
decPointIndex = num.Length; for (int i = 0; i < decPointIndex; i++)
{ int temN = Convert.ToInt32(num[decPointIndex - 1 - i].ToString());
string temp = daxie[temN].ToString();
if (i == 0)
{
if (temN == 0)
temp = "元";
else
temp += "元";
}
else if (i == 4 || i == 12)
{
if (temN == 0)
temp = "万";
else
temp += "万";
} else if (i == 8)
{
if (temN == 0)
temp = "亿";
else
temp += "亿";
} else
{
int weishu = i % 4;
string unit="";
switch (weishu)
{
case 1:
unit = "拾";
break;
case 2:
unit = "佰";
break; case 3:
unit = "仟";
break; }
if (temN != 0)
temp = temp + unit;
} integerPart = temp + integerPart;
}
integerPart=integerPart.Replace("零零零", "零");
integerPart=integerPart.Replace("零零", "零");
integerPart = integerPart.Replace("万零亿", "万亿");
integerPart = integerPart.Replace("亿零万", "亿");
integerPart = integerPart.Replace("万零元", "万元");
//30万亿
integerPart = integerPart.Replace("亿零元", "亿元");
integerPart = integerPart.Replace("佰零元", "佰元");
integerPart = integerPart.Replace("仟零元", "仟元");
integerPart = integerPart.Replace("佰零万", "佰万");
integerPart = integerPart.Replace("仟零万", "仟万");
integerPart = integerPart.Replace("佰零亿", "佰亿");
integerPart = integerPart.Replace("仟零亿", "仟亿");
rmbDaxie.Text = integerPart.ToString();
return integerPart.ToString();
//如果为整数,则添加整,否则不添加
}
//人民币大写转换
//零壹贰叁肆伍陆柒捌玖 拾佰仟万亿、元角分、零、整
//最多十六位整数,
private string rmbTranslate(string num)
{
//num = "3010020000.00";
// num = "3010020002.01";
// num = "3000000002.01";
string daxie = "零壹贰叁肆伍陆柒捌玖";
string integerPart = "整";
int decPointIndex = num.LastIndexOf('.');
if (decPointIndex < 0)
decPointIndex = num.Length; for (int i = 0; i < decPointIndex; i++)
{ int temN = Convert.ToInt32(num[decPointIndex - 1 - i].ToString());
string temp = daxie[temN].ToString();
if (i == 0)
{
if (temN == 0)
temp = "元";
else
temp += "元";
}
else if (i == 4 || i == 12)
{
if (temN == 0)
temp = "万";
else
temp += "万";
} else if (i == 8)
{
if (temN == 0)
temp = "亿";
else
temp += "亿";
} else
{
int weishu = i % 4;
string unit="";
switch (weishu)
{
case 1:
unit = "拾";
break;
case 2:
unit = "佰";
break; case 3:
unit = "仟";
break; }
if (temN != 0)
temp = temp + unit;
} integerPart = temp + integerPart;
}
integerPart=integerPart.Replace("零零零", "零");
integerPart=integerPart.Replace("零零", "零");
integerPart = integerPart.Replace("万零亿", "万亿");
integerPart = integerPart.Replace("亿零万", "亿");
integerPart = integerPart.Replace("万零元", "万元");
//30万亿
integerPart = integerPart.Replace("亿零元", "亿元");
integerPart = integerPart.Replace("佰零元", "佰元");
integerPart = integerPart.Replace("仟零元", "仟元");
integerPart = integerPart.Replace("佰零万", "佰万");
integerPart = integerPart.Replace("仟零万", "仟万");
integerPart = integerPart.Replace("佰零亿", "佰亿");
integerPart = integerPart.Replace("仟零亿", "仟亿");
rmbDaxie.Text = integerPart.ToString();
return integerPart.ToString();
//如果为整数,则添加整,否则不添加
}
解决方案 »
- 从客户端(tea="<p style="TEXT-ALIGN...")中检测到有潜在危险的 Request.Form 值。从客户端(tea="<p sty
- 关于combobox选择的问题,怎样只让方向键起移动的作用??
- Webbrower中的js
- 详细设计文档 里的 业务架构图是个什么东东?
- 请问如何动态改变水晶报表的TEXT控件的文本?
- 求救!关于用户控件!
- 关于Winform中的一些控件问题(急!OnLine Waiting)
- HTML+javascript的解释问题
- 求一正则表达式
- 知道js文件的绝对路径,如何通过代码获取该文件呢?
- 异常信息:无法保存;正被别的用户锁定。
- 数据库怎么读取 1列的某个值
这有个写好的例子,你参考一下
/**/
/// <summary>
/// 转换人民币大小金额
/// </summary>
/// <param name="num">金额</param>
/// <returns>返回大写形式</returns>
public static 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 static string CmycurD(string numstr)
{
try
{
decimal num = Convert.ToDecimal(numstr);
return CmycurD(num);
}
catch
{
return "非数字形式!";
}
}
http://topic.csdn.net/u/20090714/19/463928cd-946b-4594-8e0c-39febe87eb13.html
//转换小写的金额至大写
public string AmountInCapitalCN(decimal amount)
{
if (amount == decimal.Parse("0.00"))
{
string capstr = "零";
return capstr;
}
else
{
string capstr, capstr1 = "", capstr2 = "", x1, x2, x3, x4, x5;
if (amount == 0) return "";
x1 = amount.ToString("0.00");
x2 = x1.Substring(0, x1.Length - 3);
x3 = x1.Substring(x1.Length - 2);
if (x3 == "00") capstr2 = "整";
else
{
capstr2 = DigitToCapitalCN(x3.Substring(1, 1), "分");
if (capstr2 == "零") capstr2 = "整";
capstr2 = DigitToCapitalCN(x3.Substring(0, 1), "角") + capstr2;
}
for (int i = 0; i < x2.Length; i++)
{
switch (i)
{
case 0:
x5 = "";
break;
case 1:
x5 = "拾";
break;
case 2:
x5 = "佰";
break;
case 3:
x5 = "仟";
break;
case 4:
x5 = "万";
break;
case 5:
if (capstr1.IndexOf("万") == -1) x5 = "拾万"; else x5 = "拾";
break;
case 6:
if (capstr1.IndexOf("万") == -1) x5 = "佰万"; else x5 = "佰";
break;
case 7:
if (capstr1.IndexOf("万") == -1) x5 = "仟万"; else x5 = "仟";
break;
case 8:
x5 = "亿";
break;
case 9:
if (capstr1.IndexOf("亿") == -1) x5 = "拾亿"; else x5 = "拾";
break;
case 10:
if (capstr1.IndexOf("亿") == -1) x5 = "佰亿"; else x5 = "佰";
break;
case 11:
if (capstr1.IndexOf("亿") == -1) x5 = "仟亿"; else x5 = "仟";
break;
case 12:
if (capstr1.IndexOf("亿") == -1) x5 = "万亿"; else x5 = "万";
break;
default:
x5 = "金额溢出!";
break;
}
capstr1 = DigitToCapitalCN(x2.Substring(x2.Length - 1 - i, 1), x5) + capstr1; }
if ((capstr1.Substring(capstr1.Length - 1, 1) == "零") & (capstr2 != "整")) x4 = "元零"; else x4 = "元";
capstr1 = RemoveDupeZero(capstr1);
if (capstr1 == "") x4 = "";
capstr = capstr1 + x4 + capstr2;
capstr = RemoveDupeZero(capstr);
//if (currency.Length > 0) x5 = currency.Trim(); else x5 = "";
//switch (x5)
//{
// case "CNY":
// x5 = "人民币";
// break;
// case "USD":
// x5 = "美元";
// break;
// case "EUR":
// x5 = "欧元";
// break;
// case "JPY":
// x5 = "日元";
// break;
// default:
// x5 = "";
// break;
//}
//return x5 + capstr;
return capstr;
} } private string DigitToCapitalCN(string digit, string cur)
{
string capdig;
switch (digit)
{
case "0":
capdig = "零";
break;
case "1":
capdig = "壹" + cur;
break;
case "2":
capdig = "贰" + cur;
break;
case "3":
capdig = "叁" + cur;
break;
case "4":
capdig = "肆" + cur;
break;
case "5":
capdig = "伍" + cur;
break;
case "6":
capdig = "陆" + cur;
break;
case "7":
capdig = "柒" + cur;
break;
case "8":
capdig = "捌" + cur;
break;
case "9":
capdig = "玖" + cur;
break;
default:
capdig = "";
break;
};
return capdig;
}
private string RemoveDupeZero(string source)
{
string result = "";
bool flag = false;
foreach (char c in source)
{
if (c != '零')
{
result += c;
flag = true;
}
else
{
if (flag)
{
result += '零';
flag = false;
}
}
}
return result.Trim('零');
}
public static string GetChineseNum(decimal value)
{
string chinese = "零壹贰叁肆伍陆柒捌玖";
string unit = "元十百千万十百千亿十百千兆十百千";
string unit2 = "角分";
StringBuilder builder = new StringBuilder();
int u = 1;
int i = 0;
//整数
while (value >= u)
{
int n = (int)value / u % 10;
u *= 10;
if (n == 0)
{
i++;
continue;
}
builder.Insert(0, unit[i++]);
builder.Insert(0, chinese[n]);
}
if (builder[builder.Length - 1] != '元')
{
builder.Append("元");
}
//小数
if ((int)value != value)
{
int value2 = (int)((value - (int)value) * 100);
int n = value2 / 10 % 10;
builder.Append(chinese[n]);
builder.Append(unit2[0]);
n = value2 % 10;
builder.Append(chinese[n]);
builder.Append(unit2[1]);
}
else
{
builder.Append("整");
}
return builder.ToString();
}