| 网站首页 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛 |
 
 
 
您现在的位置: 编程中国 >> 技术教程 >> .NET技术 >> C# >> C#技术资料 >> 正文
  ►  可以做科学计算器的c#中的两个方法
可以做科学计算器的c#中的两个方法
作者:xxjzx    阅读人次:……    文章来源:本站原创    发布时间:2007-10-24    网友评论()条
 

原帖及讨论:http://bbs.bc-cn.net/dispbbs.asp?boardid=231&id=180057

*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国  http://www.bc-cn.net
*/ 作者: xxjzx        
*/ 时间: 2007-10-23  编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------


//先引入要用到科学计算的类集  
    using System.Xml;
     using System.Xml.XPath;
//声明三个类成员变量传值
        string jg="0.00";
        double myhjg=0;                
        double zzjg=0;

/*以下为在一个文本框内输入包括文字、数字、计算符号等内容的字符串,然后抛去文字只对数字按输入的操作符进行计算的方法*/
   private void text1_TextChanged(object sender, System.EventArgs e)
        {  
            dhx2=text1.Lines.Length;
            //以下声明一个变量为text1中的行位
            int hw=0;
            //行位是总行数减一
            hw=dhx2-1;

            //以下声明一个字符串数组记录每一行原始的字符串
            string[] mhsj;
            mhsj=new string[dhx2];

            //以下声明两个字符串数组分别记录每行去掉字符只有数字和计算符号的字符串及将"/"换成"div"可做除法的结果
            string[] mhszfhzf=new string[dhx2];
            string[] mhszfhzf1=new string[dhx2];

            //第一步先将文本框中每行文本中的数字和符号取出,赋给一个新的字符串数组mhszfhzf,这样mhszfhzf每个元素即代表文本框中每行文本中的数字和符号;
            try
            {
                for(int i=0;i<dhx2;i++)
                {
                    mhsj[i]=text1.Lines[i];
                    //取出每行字符串中的所有的数字和符号并赋给新的字符串//
                    string[] dgzf;
                    dgzf=new string[mhsj[i].Length];                    
                    int j,h;
                    for(j=0;j<mhsj[i].Length;j++)
                    {
                        dgzf[j]=mhsj[i].Substring(j,1);    
                        //转换%号为乘0.01的数
                        if(dgzf[j].Equals("%")==true)
                        {
                            dgzf[j]="*0.01";
                        }                        
                    }
                    //判断/符号是单位符号还是除法符号
                    for(int k=0;k<mhsj[i].Length;k++)
                        {
                            if(dgzf[k].Equals("/")==true)
                            {
                                if (char.IsNumber(dgzf[k+1],0)==true)
                                {
                                    dgzf[k]=dgzf[k];                                    
                                }
                                else
                                {
                                    dgzf[k]="每";
                                }                            
                            }
                        
                        }
                    for(h=0;h<j;h++)
                    {
                        if(char.IsNumber(dgzf[h],0)==true ||char.IsPunctuation(dgzf[h],0)==true ||char.IsSymbol(dgzf[h],0)==true)
                        {
                            mhszfhzf[i]=mhszfhzf[i]+dgzf[h];
                        }
                    }
                }                
            }
            catch(Exception)
            {
            }
            //第二步再对mhszfhzf中每个字符串元素按数学公式进行计算;            
            try
            {
                //将“/”号换成" div "这样就可以做除法;
                mhszfhzf1[hw]=mhszfhzf[hw].Replace("/"," div ");
                //调用按公式计算的函数Evaluate按输入的公式逐行进行计算,将结果值赋给一个表示每行结果的变量
                XmlDocument xd=new XmlDocument();                
                XPathNavigator jszhs=xd.CreateNavigator();
                myhjg=(double)jszhs.Evaluate(mhszfhzf1[hw]);
            }
            catch(Exception)
            {
            }
        }

/*计算后以回车作结束,每一行得一个结果,最后将每行结果进行累加*/

        private void text1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {            
            System.EventArgs z;
            z=new EventArgs();
            if(e.KeyChar==13)
            {
                //按下回车键后将单位数量单价中的结果进行累加
                zzjg+=myhjg;
                jg=zzjg.ToString();
                            }            
        }
//计算的最终结果赋给了类成员变量jg,这样可以将结果值以字符串的形式得到!

 

 
文章录入:编辑01    责任编辑:编辑01 
  • 上一篇文章:

  • 下一篇文章:

  •  
    相关文章
    没有相关文章
    原创地带
    24小时热门帖子