计算错了

时间:2017-05-11 11:05:39

标签: c# decimal calculator

我正在努力创建一个简单的C#计算器。我有一个问题,计算器给我错误的结果,我发现我的代码没有任何问题。

例如,如果尝试计算以下计算 15 + 12 ,我会得到 30 而不是 27 的结果,这是正确的答案。

这是我的代码;任何帮助都将被视为一种新的编码方式。

namespace Calculator
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            resultBox.Text += "=";
        }

        //Function Add
        private void button_add_Click(object sender, RoutedEventArgs e)
        {
            funcBox.Clear();
            funcBox.Text += "+";
        }

        //Function Subtract
        private void button_subtract_Click(object sender, RoutedEventArgs e)
        {
            funcBox.Clear();
            funcBox.Text += "-";
        }

        //Function Multiply
        private void button_mult_Click(object sender, RoutedEventArgs e)
        {
            funcBox.Clear();
            funcBox.Text += "*";
        }

        //Function Divide
        private void button_div_Click(object sender, RoutedEventArgs e)
        {
            funcBox.Clear();
            funcBox.Text += "/";
        }


        //Clear button
        private void button_clear_Click(object sender, RoutedEventArgs e)
        {
            numBox1.Clear();
            numBox2.Clear();
            funcBox.Clear();
            resultBox.Clear();
            resultBox.Text += "= ";  
        }

        private void getResult(object sender, RoutedEventArgs e)
        {
            //Check if the both numboxes and funcbox contains something
            if (numBox1.Text.Length > 0 && numBox2.Text.Length > 0)
            {
                if (funcBox.Text.Length > 0)
                {
                    resultBox.Clear();
                    resultBox.Text += "= ";

                    decimal num1 = decimal.Parse(numBox1.Text);
                    decimal num2 = decimal.Parse(numBox1.Text);

                    decimal result = CalculateResult(num1, num2);
                    resultBox.Text += result;
                }
                else
                {
                    MessageBox.Show("No function selected.", "Error", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }
            else
            {
                MessageBox.Show("You can't leave empty fields.", "Error", MessageBoxButton.OK, MessageBoxImage.Warning);
            }

        }

        //Calculate the result
        public decimal CalculateResult(decimal num1, decimal num2)
        {
            decimal res = 0;

            if (funcBox.Text == "+")
            {
                res = num1 + num2;
            }
            else if (funcBox.Text == "-")
            {
                res = num1 - num2;
            }
            else if (funcBox.Text == "*")
            {
                res = num1 * num2;
            }
            else if (funcBox.Text == "/")
            {
                res = num1 / num2;
            }

            return res;
        }
    }
}

4 个答案:

答案 0 :(得分:3)

您为foreach($arr as $a){ // Should this line //$server->query($a); // be $local->query($a); echo $a."<br><br>"; } num1

分配了相同的值
num2

答案 1 :(得分:0)

我认为你的问题在于这两行:

decimal num1 = decimal.Parse(numBox1.Text);
decimal num2 = decimal.Parse(numBox1.Text);

'num'应该与numBox2关联吗?

答案 2 :(得分:0)

在getResult函数中,您遇到了一个问题:

decimal num1 = decimal.Parse(numBox1.Text);
decimal num2 = decimal.Parse(numBox1.Text);

应该是

decimal num1 = decimal.Parse(numBox1.Text);
decimal num2 = decimal.Parse(numBox2.Text);

答案 3 :(得分:0)

看起来同时解析了num1和num2:

decimal num1 = decimal.Parse(numBox1.Text);
decimal num2 = decimal.Parse(numBox1.Text); // Parses same text

应该是:

十进制num1 = decimal.Parse(numBox1.Text);

十进制num2 = decimal.Parse( numBox2 .Text);