C#计算器,如何将输入指向答案?

C#计算器,如何将输入指向答案?,c#,.net,calculator,C#,.net,Calculator,我正在用C#做一个计算器。 我必须使用float,因为当我除数时,我得到的答案小于0。 但是,我想让计算器用我已经得到的答案开始新的计算,所以我写道: a = Convert.ToInt64(answer); 但是,它没有帮助,它也将答案转换为int64。 我想,我可以用指针,但我不知道怎么做 那么,我如何将答案的值复制到“a”(输入),而不转换答案 Int64 a; //1st Input Int64 b; //2nd Input float answer;

我正在用C#做一个计算器。 我必须使用float,因为当我除数时,我得到的答案小于0。 但是,我想让计算器用我已经得到的答案开始新的计算,所以我写道:

 a = Convert.ToInt64(answer);
但是,它没有帮助,它也将答案转换为int64。 我想,我可以用指针,但我不知道怎么做

那么,我如何将答案的值复制到“a”(输入),而不转换答案

    Int64 a; //1st Input
    Int64 b; //2nd Input
    float answer;
    char d;
    bool pressed;
   private void button11_Click(object sender, EventArgs e)
    {
        if (d == '+') answer = a + b;
        if (d == '-') answer = a - b;
        if (d == '*') answer = a * b;
        if (d == '/') answer = a / b;
        textBox1.Text = a.ToString() + d + b.ToString() + '=' +answer.ToString();
        a = Convert.ToInt64(answer);
        b = 0;
    }

抱歉,由于缺少完整的源代码,如果有人想让我也添加它们,请告诉我:)

要考虑两个选项:

  • 只做整数除法
  • 输入和输出都使用浮点变量类型

以下几点观察可能会有所帮助:

  • 您的输入首先可能不应该是Int64,因为用户不太可能只处理整数,尤其是在他们开始使用除法时
  • 您的答案和输入应该是相同的类型,这将消除您的铸造问题
  • 浮动不精确,可能不是最佳选择。如果您需要比Float允许的精度更好的精度,您可以尝试使用Decimal。(如果您不知道浮点运算的局限性,请用谷歌搜索)

  • 首先,伙计们,他不是在问如何制作计算器,他只是在一个特定的问题上寻求帮助,我认为这就是所谓的计算机

    你在正确的轨道上,只是需要一些调整

    操作

    您很可能不需要
    Int64
    ,您可能正在寻找
    float
    double
    。下面是一个简单的例子:

    float a = 1.0f; 
    float b = 2.0f; 
    float answer = a / b;
    
    这里的答案是
    0.5
    ,如果
    a
    b
    是整数,那么答案是0。如果其中一个(或两个)是
    浮点
    双精度
    ,则答案将是十进制数

    If语句

    在我们进行这项工作时,您的if语句可以通过将其设置为if else来进行改进:

    if (d == '+') answer = a + b;
    else if (d == '-') answer = a - b;
    else if (d == '*') answer = a * b;
    else if (d == '/') answer = a / b;
    

    为什么??因为
    d
    只会是这些字符串中的一个(
    +
    -
    *
    /
    )。对于if-else,一旦一个案例为真,则跳过其余的if。在你的代码中,即使d是+,其他三个if语句仍会被检查。

    Hmm,我在你发布的代码中没有看到任何指针,因此我将删除标记。你不能通过提问和阅读答案来学习C。去给自己找本书,学C。然后,当您遇到实际问题时,请回到这里寻求帮助。Int64(也称为long)可以保存小于零的值。只有在需要保留分数值时才使用浮点。要么将a和b转换为更精确的数据类型,要么必须通过强制转换将答案四舍五入。我建议使用a和b十进制类型。@C#当然可以使用指针。并不是说真的有这样做的理由。如果你想学习c#,请忘记你所知道的关于指针的一切。你不需要它们。我想让计算器给出不完整的答案,十进制如何帮助我呢?所有大小的整数只适用于整数(整数)。Decimal是一种允许非整数的精确类型。如果将所有内容都移动到十进制,也可以删除Convert.ToInt64()调用。谢谢。但是,有没有可能将a和b保留为int64,以浮点形式获取答案,最后使“a”等于答案,以继续计算?因为,我想让用户输入超过10位数字。在这种情况下,可以使用double而不是float。Double是64位数字,而float是32位数字。