| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2360 人关注过本帖
标题:[原创]可以做科学计算器的c#中的两个方法
只看楼主 加入收藏
xxjzx
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-5-16
收藏
 问题点数:0 回复次数:2 
[原创]可以做科学计算器的c#中的两个方法
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 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,这样可以将结果值以字符串的形式得到!

[此贴子已经被作者于2007-10-23 16:27:10编辑过]

搜索更多相关主题的帖子: 计算器 科学 using Xml 中国 
2007-10-23 12:12
xxjzx
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-5-16
收藏
得分:0 

补充一点,这是用c#做的,如果要做科学计算器的话挺管用的!


一起来玩编程的游戏吧!
2007-10-23 16:24
jasonguo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-10-15
收藏
得分:0 
2007-10-30 16:24
快速回复:[原创]可以做科学计算器的c#中的两个方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016904 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved