//小数点的操作
private void btn_clk(object obj,EventArgs ea)
{
if(blnClear)
txtCalc.Text="";
Button b3=(Button)obj;
txtCalc.Text+=b3.Text;
if(txtCalc.Text==".")
txtCalc.Text="0.";
dblSec=Convert.ToDouble(txtCalc.Text);
blnClear=false;
}
//程序开始点
private static void Main()
{
Application.Run(new calcForm());
}
//操作按钮的实现代码
private void btn_Oper(object obj,EventArgs ea)
{
Button tmp=(Button)obj;
strOper=tmp.Text;
if(blnFrstOpen)
dblAcc=dblSec;
else
calc(); //调用运算操作函数
blnFrstOpen=false;
blnClear=true;
}
//正负运算方法
private void btn_sign(object obj,EventArgs ea)
{
dblSec=-dblSec;
txtCalc.Text=Convert.ToString(dblSec);
}
//十进制数转换成二进制数的实现方法
//二进制按钮的实现代码
private void btn_itsc(object obj,EventArgs ea)
{
int i=0,m=0;
int k=1;
int dblSec1=0; //整数部分存储变量
int intSec1=0;
int[] liuSec1=new int[20]; //
int[] liuSec2=new int[20]; //
Double dblSec2=0; //小数部分存储变量
Double n=0.1;
//先将输入的数值分成整数和小数两部分
dblSec1=(int)dblSec; //输入数的整数部分
dblSec2=dblSec-dblSec1; //输入数的小数部分
//将十进制数的整数部分转换成二进制数
//1.用2作除数连续求余
while(dblSec1>0)
{
intSec1=(int)(dblSec1/2);
liuSec1[i]=dblSec1-(intSec1*2);
i++;
dblSec1=intSec1;
}
//2.用求得的所有余数组成整数部分的二进制树
for(int j=0;j<i;j++)
{
dblSec1+=liuSec1[j]*k;
k*=10;
}
//将十进制数的小数部分转换成二进制数
//1.用2作乘数连续取整数
while((dblSec2>0)&&(m<5))
{
//当乘2恰好为1时
if((dblSec2*2)>=1)
{
liuSec2[m]=1;
dblSec2=(dblSec2*2)-1;
m++;
}
//乘2不为1时
else if((dblSec2*2)>0&&(dblSec2*2)<1)
{
liuSec2[m]=0;
dblSec2*=2;
m++;
}
}
//2.将所有取得的整数转换成二进制数
dblSec2=0;
for(int s=0;s<m;s++)
{
dblSec2+=liuSec2[s]*n;
n*=0.1;
}
dblSec=dblSec1+dblSec2;
txtCalc.Text=Convert.ToString(dblSec);
}
//左括号按钮的实现代码
private void btn_lkh(object obj,EventArgs ea)
{
dblStore=dblSec;
strStore=strOper;
clear(); //调用清除函数
}
//右括号按钮的实现代码
private void btn_rkh(object obj,EventArgs ea)
{
calc();
dblAcc=dblStore;
strOper=strStore;
calc(); //调用运算操作函数
}
//等号运算(用调用运算操作函数来实现)
private void btn_equ(object obj,EventArgs ea)
{
calc(); //调用所有运算操作函数
}
//所有运算操作函数
private void calc()
{
switch(strOper)
{
case "+":
dblAcc+=dblSec; //加号运算
break;
case "-":
dblAcc-=dblSec; //减号运算
break;
case "*":
dblAcc*=dblSec; //乘号运算
break;
case "/":
dblAcc/=dblSec; //除号运算
break;
case "Sqrt":
dblAcc=System.Math.Sqrt(dblSec); //开方运算
break;
case "Sqr":
dblAcc=dblSec*dblSec; //乘方运算
break;
case "1/x":
dblAcc=1/dblSec; //倒数运算
break;
}
strOper="="; //等号运算
blnFrstOpen=true;
txtCalc.Text=Convert.ToString(dblAcc);//将运算结果转换成字符类型,并输出
dblSec=dblAcc;//将运算数A的值放入运算数B中,以便后面运算
}
//清除按钮的实现代码
private void btn_clr(object obj,EventArgs ea)
{
clear(); //调用清除函数
}
//清除按钮的操作(调用清除函数来实现)
private void clear()
{
dblAcc=0;
dblSec=0;
blnFrstOpen=true;
txtCalc.Text="";
txtCalc.Focus();//设置焦点为txtCalc
}
//以上是添加的代码
}
}