【发布时间】:2016-01-09 05:01:51
【问题描述】:
我对此感到困惑。
所以我有一个控制台应用程序进行大量计算(相信我,数以千计)。在一种方法中,我有一些需要在不同情况下计算的参数。其中一种,数学表达方式基本相同,只有一个词的区别。这是代码 sn-p 以及所讨论的 2 个公式之间的所有行,即 Nq1 和 Nq2 (代码的第一个公式和最后一个更容易):
//drained conditions
Nq1 = Math.Round((Math.Pow(Math.E, Math.PI * Math.Tan(studiu.Fi * Constants.ConversionToDeg)) * Math.Pow((Math.Tan(45 + studiu.Fi / 2.00) * Constants.ConversionToDeg), 2)), 2);
//Combination 2
studiu.Fi = FiAfectat;
//drained conditions
Nq2 = Math.Round((Math.Pow(Math.E, Math.PI * Math.Tan(studiu.Fi * Constants.ConversionToDeg)) * Math.Pow((Math.Tan(45 + studiu.Fi / 2.00) * Constants.ConversionToDeg), 2)), 2);
第一个公式返回 18.04,但第二个公式返回 0.01。这怎么可能 ?只有 studiu.Fi 术语不同,但差别不大(第一种情况为 32,第二种情况为 27)。
Nq1 怎么可能是 18 而 Nq2 怎么可能是 0.01 呢?我在这里错过了什么吗?
【问题讨论】:
-
For one of them, the mathematical expression is basically the same, only one difference in a term.好的,把你的代码缩短到几行,问一个具体的问题。不要指望我们会读到这堵代码墙…… -
在调试器中逐行运行,验证每个中间结果。
-
我真的没有机会阅读那张庞大的操作列表。将您的代码最小化为演示问题的最短示例。
-
这是一个很好的例子,说明为什么将长脚本分解成封装的方法很重要。您似乎正在使用#regions,这是一个糟糕的选择。如果这不是一种大规模的方法,那么识别故障点会容易得多。
-
您说的是 2 个公式,但我看到了无数个公式。你为什么不向我们展示这两个公式。