c# 最后调用出错

xiaofangzyl 2005-11-25 12:00:42
以下是我参考别人的一个转换人民币大写的函数程序,放在c#环境中进行调试,到最后出错,麻烦大家给打点一下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Webtest
{
/// <summary>
/// monkeytest 的摘要说明。
/// </summary>
public class monkeytest : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label lbl1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}
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 zeronum=0;//用来计算连续的零值是几个//
int temp;//从原num值中取出的值,将字符形式转换为数字//
num=Math.Round(Math.Abs(num),2);//将num取绝对值并四舍五入取2位小数,num是函数的形参//
str4=((long)(num*100)).ToString();//将num乘以100并转换成字符串形式//
j=str4.Length ;//找出最高位//
if(j>15)
{
return "error!";
}
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="";
zeronum=zeronum+1;
}
else
{
if(str3!="0"&& zeronum!=0)
{
ch1="零"+str1.Substring(temp*1,1);
ch2=str2.Substring(i,1);
zeronum=0;
}
else
{
ch1=str1.Substring(temp*1,1);
ch2=str2.Substring(i,1);
zeronum=0;
}
}
}
else
{
//该位是万亿,亿,成,元等关键位//
if(str3!="0"&& zeronum!=0)
{
ch1="零"+str1.Substring(temp*1,1);
ch2=str2.Substring(i,1);
zeronum=0;
}
else
{
if(str3!="0"&& zeronum==0)
{
ch1=str3.Substring(temp*1,1);
ch2=str2.Substring(i,1);
zeronum=0;
}
else
{
if(str3=="0"&&zeronum>3)
{
ch1="";
ch2="";
zeronum=zeronum+1;
}
else
{
if(j>=11)
{
ch1="";
zeronum=zeronum+1;
}
else
{
ch1="";
ch2=str2.Substring(i,1);
zeronum=zeronum+1;
}
}
}
}
}
if(i==(j-11)||i==(j-3))
{
//如果该位是亿位或元位,则必须写上//
ch2=str2.Substring(i,1);
}
str5=str5+ch1+ch2;
if(i==j-1&&str3=="0")
{
str5=str5+'整';
}
}
if(num==0)
{
str5="零元整!";
}
return str5;

}
public static string CmycurD(string numstr)
{
try
{
decimal num=decimal.Parse(numstr);
return CmycurD(num);
}
catch
{
return "非数字形式!";
}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}
就是这里运行不通:return CmycurD(num);
出错原因是:
1.与该方法最匹配的重载方法具有一些无效参数;
2.无法从"decimal"转换为"string"
请大家指点一下,急!
...全文
80 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
terryshi 2005-11-25
  • 打赏
  • 举报
回复
1、调用函数的时候参数少了(或多了)
2、decimal d_Tmp = 2.333;
string str_Tmp = d_Tmp.ToString();
xiaofangzyl 2005-11-25
  • 打赏
  • 举报
回复
怎么样调整一下程序呢?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧