Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算错误_C#_Decimal_Calculator - Fatal编程技术网

C# 计算错误

C# 计算错误,c#,decimal,calculator,C#,Decimal,Calculator,为了好玩,我正在尝试创建一个简单的C#计算器。我有一个问题,计算器给了我错误的结果,我找不到我的代码有任何错误 例如,如果尝试计算以下计算结果15+12,它会给我一个30的结果,而不是27,这是正确的答案 这是我的密码;任何帮助都将被感激,因为我是一个新的编码 namespace Calculator { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary>

为了好玩,我正在尝试创建一个简单的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;
        }
    }
}
名称空间计算器
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
resultBox.Text+=“=”;
}
//函数添加
私有无效按钮\u添加\u单击(对象发送者,路由目标)
{
funcBox.Clear();
funcBox.Text+=“+”;
}
//函数减法
私有无效按钮\u减去\u单击(对象发送方,路由目标)
{
funcBox.Clear();
funcBox.Text+=“-”;
}
//函数乘法
私有无效按钮多点单击(对象发送者,路由目标)
{
funcBox.Clear();
funcBox.Text+=“*”;
}
//功能划分
私有无效按钮\u div\u单击(对象发送者,路由目标)
{
funcBox.Clear();
funcBox.Text+=“/”;
}
//清除按钮
私有无效按钮\u清除\u单击(对象发送者,路由目标)
{
numBox1.Clear();
numBox2.Clear();
funcBox.Clear();
resultBox.Clear();
resultBox.Text+=“=”;
}
私有void getResult(对象发送方,RoutedEventArgs e)
{
//检查numboxes和funcbox是否都包含某些内容
如果(numBox1.Text.Length>0&&numBox2.Text.Length>0)
{
如果(funcBox.Text.Length>0)
{
resultBox.Clear();
resultBox.Text+=“=”;
decimal num1=decimal.Parse(numBox1.Text);
decimal num2=decimal.Parse(numBox1.Text);
十进制结果=计算结果(num1,num2);
resultBox.Text+=结果;
}
其他的
{
MessageBox.Show(“未选择任何功能。”,“错误”,MessageBoxButton.OK,MessageBoxImage.Warning);
}
}
其他的
{
Show(“您不能留下空字段。”,“错误”,MessageBoxButton.OK,MessageBoxImage.Warning);
}
}
//计算结果
公共十进制计算器结果(十进制num1,十进制num2)
{
十进制res=0;
如果(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;
}
返回res;
}
}
}

您正在为
num1
num2

decimal num1 = decimal.Parse(numBox1.Text);
decimal num2 = decimal.Parse(numBox1.Text);<- here is the issue, change to numBox2 instead
decimalnum1=decimal.Parse(numBox1.Text);

decimal num2=decimal.Parse(numBox1.Text) 我认为你的问题在于这两方面:

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

“num”应该与numBox2关联,对吗?

在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);

看起来num1和num2是同时解析的:

decimal num1 = decimal.Parse(numBox1.Text);
decimal num2 = decimal.Parse(numBox1.Text); // Parses same text
应该是:

decimal num1=decimal.Parse(numBox1.Text)


decimal num2=decimal.Parse(numBox2.Text)

使用调试器,卢克!Try:resultBox.Text+=result.ToString();decimal num1=decimal.Parse(numBox1.Text);decimal num2=decimal.Parse(numBox1.Text);因此,15+15=30