C# 为什么如果结果正确,它告诉我这是错误的

C# 为什么如果结果正确,它告诉我这是错误的,c#,C#,该程序以十进制方式对随机数进行运算,使用ran.next获得和,并存储在变量sum1a(对于第一个数字)和sum2a(对于第二个数字)中,并打印在“Suma1.Text”中;操作员需要在名为“Resultado”的文本框中捕获结果,如何将名称“Resultado1”存储在变量result1中,然后与sum1a和sum2a之和进行比较,并存储在total1中,以与result1进行比较,如果total1与result1匹配,则当没有匹配时,必须打印“Correcto”或“Incorrecto”,但

该程序以十进制方式对随机数进行运算,使用ran.next获得和,并存储在变量sum1a(对于第一个数字)和sum2a(对于第二个数字)中,并打印在“Suma1.Text”中;操作员需要在名为“Resultado”的文本框中捕获结果,如何将名称“Resultado1”存储在变量result1中,然后与sum1asum2a之和进行比较,并存储在total1中,以与result1进行比较,如果total1result1匹配,则当没有匹配时,必须打印“Correcto”或“Incorrecto”,但有时即使结果正确,也表示为“Incorrecto”

[计算器与程序][1]

namespace Sumas_punto_decimal_prueba
{
public partial class Form1 : Form
{
    double sum1a, sum2a;
    string num1a, num2a;
    double total1;
    double result1;      

    public Form1()
    {
        InitializeComponent();
    }

    private void Generar_Click(object sender, EventArgs e)
    {

        //LIMPIADOR
        foreach (Control ctrl in this.Controls)
        {
            if (ctrl is TextBox)
            {
                TextBox text = ctrl as TextBox;
                text.Clear();
            }
        }

        Random ran = new Random();
        //SUMA 1
        sum1a = ran.Next(100 , 10000) / 100.00;
        sum2a = ran.Next(100 , 10000) / 100.00;
        num1a = sum1a.ToString("##.#0");
        num2a = sum2a.ToString("##.#0");

        if (sum1a < 10 && sum2a < 10)
        {
            Suma1.Text = "   0" + num1a + "\r\n +0" + num2a + "\r\n¯¯¯¯¯¯¯";
        }
        else if (sum1a < 1 && sum2a < 1)
        {

            Suma1.Text = "  00" + num1a + "\r\n +00" + num2a + "\r\n¯¯¯¯¯¯¯";
        }
        else if (sum1a < 10 && sum2a < 1)
        {
            Suma1.Text = "   0" + num1a + "\r\n +00" + num2a + "\r\n¯¯¯¯¯¯¯";
        }
        else if (sum1a < 1 && sum2a < 10)
        {
            Suma1.Text = "  00" + num1a + "\r\n +0" + num2a + "\r\n¯¯¯¯¯¯¯";
        }
        else if (sum1a < 10)
        {
            Suma1.Text = "   0" + num1a + "\r\n +" + num2a + "\r\n¯¯¯¯¯¯¯";
        }
        else if (sum1a < 1)
        {
            Suma1.Text = "  00" + num1a + "\r\n +" + num2a + "\r\n¯¯¯¯¯¯¯";
        }
        else if (sum2a < 10)
        {
            Suma1.Text = "   " + num1a + "\r\n +0" + num2a + "\r\n¯¯¯¯¯¯¯";
        }
        else if (sum2a < 1)
        {
            Suma1.Text = "   " + num1a + "\r\n +00" + num2a + "\r\n¯¯¯¯¯¯¯";
        }
        else if (sum2a < 1)
        {
            Suma1.Text = "   " + num1a + "\r\n +00" + num2a + "\r\n¯¯¯¯¯¯¯";
        }
        else
        {
            Suma1.Text = "   " + num1a + "\r\n +" + num2a + "\r\n¯¯¯¯¯¯¯";
        }
    }

    private void Calificar_Click(object sender, EventArgs e)
    {
        //SUMA NUMERO 1
        double.TryParse(Resultado1.Text, out result1);
        total1 = sum1a + sum2a;
        if (result1 == total1)
        {
            Validacion1.Text = "Correcto";
        }
        else
        {
            Validacion1.Text = "Incorrecto. \r\nEl resultado es: " + total1;
        }
    }

}

谢谢。uwu

可能是因为它们根本不相等, 可能并不是所有的数字都是在一个月内记录下来的。比较 而不是字符串,并使用打印操作查看错误所在的位置

if (string == string)
{
// Ganastes!
}

if("159.73" == "159.73")
{
// Correct!
}

您的问题似乎既与压缩有关,又与不正确的结果有关。如果你只把问题的焦点放在错误的结果上,可能会更容易得到答案。您可以使用CodeReviewSE进行压缩位,因为这里没有主题。可能会添加一些测试用例?
,但有时不
,您需要更加具体。这看起来像一个复杂的开关/用例。该控制结构在几年前就被赋予了与C版本匹配的模式。所以你可以把它变成更可读的东西为了判断出什么地方出了问题,我们需要知道使用什么值会得到什么结果。与其嵌套if语句,不如执行
else if
,使代码更具可读性。请阅读以下内容:
if (string == string)
{
// Ganastes!
}

if("159.73" == "159.73")
{
// Correct!
}