C# 计算器:十进制数字例外

C# 计算器:十进制数字例外,c#,xaml,decimal,calculator,C#,Xaml,Decimal,Calculator,它可以用整数加、减、乘、除,但不能用十进制数。 sum1变量有点问题,比如当十进制数也被分配给它们时,它们的格式是错误的。这是因为它们被定义为双精度,但我不知道如何写得不同 double sum1 = 0; double sum2 = 0; bool plusButtonClicked = false; bool subButtonClicked = false; bool multButtonClicked = false; bool divButton

它可以用整数加、减、乘、除,但不能用十进制数。 sum1变量有点问题,比如当十进制数也被分配给它们时,它们的格式是错误的。这是因为它们被定义为双精度,但我不知道如何写得不同

double sum1 = 0;
    double sum2 = 0;
    bool plusButtonClicked = false;
    bool subButtonClicked = false;
    bool multButtonClicked = false;
    bool divButtonClicked = false;

    public MainWindow()
    {
        InitializeComponent();
    }

    private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
    {
        Regex regex = new Regex("[^0-9]+");
        e.Handled = regex.IsMatch(e.Text);
    }

    private void one_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += one.Content;
    }

    private void two_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += two.Content;
    }

    private void three_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += three.Content;
    }

    private void four_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += four.Content;
    }

    private void five_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += five.Content;
    }

    private void six_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += six.Content;
    }

    private void seven_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += seven.Content;
    }

    private void eight_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += eight.Content;
    }

    private void nine_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += nine.Content;
    }

    private void zero_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Text += zero.Content;
    }

    private void add_Click(object sender, RoutedEventArgs e)
    {
        sum1 += double.Parse(numEnt.Text);
        numEnt.Clear();

        plusButtonClicked = true;
        subButtonClicked = false;
        multButtonClicked = false;
        divButtonClicked = false;
    }

    private void sub_Click(object sender, RoutedEventArgs e)
    {
        sum1 += double.Parse(numEnt.Text);
        numEnt.Clear();

        plusButtonClicked = false;
        subButtonClicked = true;
        multButtonClicked = false;
        divButtonClicked = false;
    }

    private void mult_Click(object sender, RoutedEventArgs e)
    {
        sum1 += double.Parse(numEnt.Text);
        numEnt.Clear();

        plusButtonClicked = false;
        subButtonClicked = false;
        multButtonClicked = true;
        divButtonClicked = false;
    }

    private void div_Click(object sender, RoutedEventArgs e)
    {
        sum1 += double.Parse(numEnt.Text);
        numEnt.Clear();

        plusButtonClicked = false;
        subButtonClicked = false;
        multButtonClicked = false;
        divButtonClicked = true;
    }

    private void deci_Click(object sender, RoutedEventArgs e)
    {
        string currentInput = numEnt.Text;
        bool pointFound = false;

        for (int i = 0; i < currentInput.Length; i++)
        {
            if (currentInput[i] == '.')
                pointFound = true;

        }

        if (pointFound == false)
            numEnt.Text += ".";
    }

    private void equal_Click(object sender, RoutedEventArgs e)
    {
        if (plusButtonClicked == true)
        {
            sum2 = sum1 + double.Parse(numEnt.Text);
            result.Text = sum2.ToString();
            sum1 = 0;
        }

        if (subButtonClicked == true)
        {
            sum2 = sum1 - double.Parse(numEnt.Text);
            result.Text = sum2.ToString();
            sum1 = 0;
        }

        if (multButtonClicked == true)
        {
            sum2 = sum1 * double.Parse(numEnt.Text);
            result.Text = sum2.ToString();
            sum1 = 0;
        }

        if (divButtonClicked == true)
        {
            sum2 = sum1 / double.Parse(numEnt.Text);
            result.Text = sum2.ToString();
            sum1 = 0;
        }
    }

    private void clear_Click(object sender, RoutedEventArgs e)
    {
        numEnt.Clear();
        calculations.Clear();
        result.Clear();
    }




}
double sum1=0;
双sum2=0;
bool plusButtonClicked=false;
bool subButtonClicked=false;
bool multButtonClicked=false;
bool divButtonClicked=false;
公共主窗口()
{
初始化组件();
}
private void NumberValidationTextBox(对象发送者,文本组合目标)
{
正则表达式正则表达式=新正则表达式(“[^0-9]+”);
e、 Handled=regex.IsMatch(e.Text);
}
私有无效单击一次(对象发送者,路由目标)
{
numEnt.Text+=1.Content;
}
私有无效两次单击(对象发送者,路由目标e)
{
numEnt.Text+=2.Content;
}
私有无效三次单击(对象发送者,路由目标e)
{
numEnt.Text+=3.Content;
}
私有无效四次单击(对象发送者,路由目标e)
{
numEnt.Text+=4.Content;
}
私有无效五次单击(对象发送者,路由目标e)
{
numEnt.Text+=5.Content;
}
私有无效六次单击(对象发送者,路由目标e)
{
numEnt.Text+=6.Content;
}
私有无效七次单击(对象发送者,路由目标e)
{
numEnt.Text+=7.Content;
}
私有无效八次单击(对象发送者,路由目标e)
{
numEnt.Text+=8.Content;
}
私有无效九点单击(对象发送者,路由目标e)
{
numEnt.Text+=9.Content;
}
私有无效零点击(对象发送者,路由目标)
{
numEnt.Text+=0.Content;
}
私有无效添加\单击(对象发送者,路由目标)
{
sum1+=double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked=true;
subButtonClicked=false;
multButtonClicked=假;
divButtonClicked=false;
}
私有无效子对象单击(对象发送者,路由目标)
{
sum1+=double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked=false;
subButtonClicked=true;
multButtonClicked=假;
divButtonClicked=false;
}
私有无效多点单击(对象发送者,路由目标)
{
sum1+=double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked=false;
subButtonClicked=false;
multButtonClicked=true;
divButtonClicked=false;
}
私有无效分区单击(对象发送方,路由目标)
{
sum1+=double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked=false;
subButtonClicked=false;
multButtonClicked=假;
divButtonClicked=true;
}
私有无效决策单击(对象发送者,路由目标)
{
字符串currentInput=numEnt.Text;
bool pointFound=false;
对于(int i=0;i
首先将
sum1
变量声明为
double
。还有一件事你需要一个
for循环
来检查字符串是否有
小数点
。相反,您可以使用
string.Contains
方法。请尝试此代码,希望它能有所帮助

double sum1 =0.0 ;
private void add_Click(object sender, RoutedEventArgs e)
{
    sum1 += double.Parse(numEnt.Text);
    numEnt.Clear();

    plusButtonClicked = true;
    subButtonClicked = false;
    multButtonClicked = false;
    divButtonClicked = false;
}

private void sub_Click(object sender, RoutedEventArgs e)
{
    sum1 -= double.Parse(numEnt.Text);
    numEnt.Clear();

    plusButtonClicked = false;
    subButtonClicked = true;
    multButtonClicked = false;
    divButtonClicked = false;
}

private void mult_Click(object sender, RoutedEventArgs e)
{
    sum1 *= double.Parse(numEnt.Text);
    numEnt.Clear();

    plusButtonClicked = false;
    subButtonClicked = false;
    multButtonClicked = true;
    divButtonClicked = false;
}

private void div_Click(object sender, RoutedEventArgs e)
{
    sum1 /= double.Parse(numEnt.Text);
    numEnt.Clear();

    plusButtonClicked = false;
    subButtonClicked = false;
    multButtonClicked = false;
    divButtonClicked = true;
}

private void deci_Click(object sender, RoutedEventArgs e)
{
    string currentInput = numEnt.Text;
    bool pointFound = false;

    //for (int i = 0; i < currentInput.Length; i++)
    //{
        if(currentInput.Contains("."))//if (currentInput[i] == '.')
            pointFound = true;

    //}

    if (pointFound == false)
        numEnt.Text += ".";
}
double sum1=0.0;
私有无效添加\单击(对象发送者,路由目标)
{
sum1+=double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked=true;
subButtonClicked=false;
multButtonClicked=假;
divButtonClicked=false;
}
私有无效子对象单击(对象发送者,路由目标)
{
sum1-=double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked=false;
subButtonClicked=true;
multButtonClicked=假;
divButtonClicked=false;
}
私有无效多点单击(对象发送者,路由目标)
{
sum1*=double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked=false;
subButtonClicked=false;
multButtonClicked=true;
divButtonClicked=false;
}
私有无效分区单击(对象发送方,路由目标)
{
sum1/=double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked=false;
subButtonClicked=false;
multButtonClicked=假;
divButtonClicked=true;
}
私有无效决策单击(对象发送者,路由目标)
{
字符串currentInput=numEnt.Text;
bool pointFound=false;
//对于(int i=0;i