相同的数学表达式返回不同的结果

本文关键字:结果 返回 表达式 | 更新日期: 2023-09-27 18:17:06

我很困惑。

所以我有一个控制台应用程序做大量的计算(相信我,成千上万的计算)。在一种方法中,我有一些参数需要在不同的情况下计算。对于其中一种,数学表达式基本相同,只有一项不同。下面是代码片段以及两个公式之间的所有行,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。这怎么可能呢?只有书房。第5项不同,但差别不大(第一种情况是32,第二种情况是27)。

为什么Nq1为18而Nq2为0.01 ?我错过什么了吗?

相同的数学表达式返回不同的结果

Tan(x)是一个周期函数,它会因x的微小变化而急剧变化。由于这两个公式在Tan函数中只相差一项,因此这可能是您的问题。

同样,你可能应该使用弧度而不是角度。如果是这种情况,你应该使用一个将实数转换为弧度的命令,而不是转换为角度的命令。