【问题标题】:C# - Computing Mathematical equation from Strings only [duplicate]C# - 仅从字符串计算数学方程 [重复]
【发布时间】:2016-07-07 20:30:12
【问题描述】:

为了简短起见,我想做的是将像“/”这样的简单字符串转换为实际的 / 符号,这样我就可以像这样使用它。

下面代码中的 button.Text 将是其中之一 “+”、“-”、“/”、“*”

Button button = (Button)sender;

lblAns.Text = (Convert.ToDouble(txtNum1.Text) + button.Text + Convert.ToDouble(txtNum2.Text)).ToString();

我希望这是有道理的......

先谢谢了。

【问题讨论】:

  • 怎么了?
  • 你不能那样做。你需要解析字符串,如果你看到/,你就会知道你需要除法。您不能只将字符串转换为代码(我知道,您确实可以,但您不想这样做)
  • 哦哈哈,我假设他想在标签上显示公式,而不是实际的数学结果!不,这在很多方面都在折磨所有优秀的编码原则。
  • 哈哈,是的,我知道这不是正常的做事方式,但我喜欢寻找新的独特的做事方式,如果我能让该代码工作,它将替换其他 13 行代码.所以我宁愿只使用 2 而不是 13。
  • @iankorkie -- 在积累经验的过程中,您将了解到,较短并不总是更好。软件开发艺术有许多经过实践检验的真正原则,其中许多原则是通过应用快捷方式来打破的。

标签: c#


【解决方案1】:

事实证明,您实际上可以这样做:

仅在 C# 中使用字符串计算数学运算

string statement = txtNum1.Text + button.Text + txtNum2.Text;
lblAns.Text = new System.Data.DataTable().Compute(statement, "").ToString();

工作Example

string result = (new System.Data.DataTable()).Compute("5 * 4 + 1", "").ToString();
Console.WriteLine(result); // prints 21

【讨论】:

  • @iankorkie 检查前两行。下面是另一种方法。
  • 太棒了,谢谢分配
猜你喜欢
  • 2017-09-03
  • 2016-06-24
  • 2020-12-27
  • 2011-02-20
  • 2021-03-29
  • 2018-08-20
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
相关资源
最近更新 更多