【问题标题】:I can't write a complex equation in code我无法在代码中编写复杂的方程式
【发布时间】:2018-05-16 01:46:10
【问题描述】:

我一直在尝试将这个复杂的方程式转换为代码,看来我可能做错了什么。这是方程式的图像:

这是我尝试将方程式转换为代码的第一个代码。

double answer = 1 - (Math.Pow(f, n) * ((s * l / f) + Math.Pow((20 / f), w) / Math.Pow(20, n)));

这是我在第二次尝试中使用的代码:

double answer = 1 - Math.Pow(f, n) * ((s * l) / f) + Math.Pow((20 / f), w) / Math.Pow(20, n);

如果我假设方程的每个变量都是 2,那么我得到 -.02。但是当我运行代码时,第一次尝试代码返回值 -8,而第二次尝试返回值 -6.75。

我现在的代码有什么问题吗?如果我不善于解释,也很抱歉。

【问题讨论】:

  • 如果您能提供一个minimal reproducible example,我们可以将其复制并粘贴到控制台应用程序中,那就太好了。请务必包含样本输入和预期的样本输出。
  • 另外,我建议将您的代码分开而不是全部放在一行中。例如,一行可能是var bob = s * l / f;。通过拆分它,您可以逐行调试它。在每行执行之前问问自己“我在这里期望什么价值?”。然后运行线路。如果您没有得到预期的值,那么您的错误(或您的错误之一)就在该行。

标签: c# visual-studio math equation


【解决方案1】:

我对此进行了测试,得到了 -0.02 的结果。尝试拆分代码以使其更清晰。它可能会帮助您在一行上诊断复杂方程的语法。

double f = 2;
double n = 2;
double s = 2;
double w = 2;
double l = 2;


double A = Math.Pow(f, n);
double B = (s * l) / f;
double C = Math.Pow((20 / f), w);
double bottom = Math.Pow(20, n);
double top = A * (B + C);
double answer = 1 - top / bottom;

【讨论】:

  • 我得记下那个
【解决方案2】:

在这两次尝试中,你只是把括号放在了错误的位置。

试试这个:

double answer =
    1 - Math.Pow(f, n) * (s * l / f + Math.Pow((20 / f), w)) / Math.Pow(20, n);

【讨论】:

  • 我永远不会意识到这一点!非常感谢!
【解决方案3】:

尝试改用下面的公式:

double answer = (1 - Math.pow((Math.pow(f,n)*[s*l/f+20/f})),w)/Math.pow(20,f)

【讨论】:

  • 您提出的公式不正确。变量被错误地使用了,您的解决方案需要重新考虑。
猜你喜欢
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 2013-11-13
相关资源
最近更新 更多