【问题标题】:C# Calculator , how to point an Input to the answer?C#计算器,如何将输入指向答案?
【发布时间】:2012-01-29 07:30:58
【问题描述】:

我正在用 C# 做一个计算器。 我必须使用浮点数,因为当我除数时,得到的答案小于 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;
    }

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

【问题讨论】:

  • 嗯,我在你发布的代码中没有看到任何指针,所以我要删除标签。
  • 你不能通过提问和阅读答案来学习 C#。去给自己找一本书并学习 C#。然后,当您遇到一些真正的问题时,请回到这里寻求帮助。
  • Int64(也称为 long)可以保存小于零的值。仅当您需要保留小数值时才使用浮点数。要么将 a 和 b 转换为更精确的数据类型,要么您必须通过强制转换来四舍五入答案。我建议制作 a 和 b 十进制类型。
  • @Jeff Unsafe C# 肯定可以使用指针。并不是说真的曾经有理由这样做。
  • 如果你想学习c#,请忘记你对指针的了解。你不需要它们。

标签: c# .net calculator


【解决方案1】:

一些可能有帮助的观察结果:

  1. 您的输入可能一开始就不应该是 Int64,因为用户不太可能只使用整数,尤其是当他们开始使用除法时。
  2. 您的答案和您的输入应该是同一类型,这将消除您的投射问题。
  3. 浮点数不精确,可能不是最佳选择。如果您需要比浮点数更高的精度,您可以尝试十进制。 (如果您不知道浮点运算的局限性,请谷歌)

【讨论】:

  • 我想让计算器给出不完整的答案,十进制如何帮助我?
  • 所有大小的整数仅用于整数(整数)。小数是允许非整数的精确类型。如果您将所有内容移至十进制,您也可以删除您的 Convert.ToInt64() 调用。
【解决方案2】:

首先,伙计们,他不是在问如何制作计算器,他只是在寻求特定问题的帮助,我认为这就是 SO 应该做的。

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

运营

您很可能不需要Int64,您可能正在寻找floatdouble。所以这里是一个简单的例子:

float a = 1.0f; 
float b = 2.0f; 
float answer = a / b;

这里的答案是0.5,如果ab 是整数,答案是0。如果其中一个(或两者)是floatdouble,那么答案将是一个小数号码。

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 语句。

【讨论】:

  • 谢谢,但是,有没有可能留下 a 和 b int64,在浮点数中得到答案,最后使 'a' 等于答案,继续计算?因为,我想让用户输入超过 10 位数字。
  • 在这种情况下,您可以使用 double 而不是 float。 Double 是 64 位数字,而 float 是 32 位数字。
【解决方案3】:

需要考虑的两个选项:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2012-10-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多