这是一个数学问题,但是要尝试解决C#编程问题,所以我不确定这是否是最适合它的地方。
在下面的代码中,我可以得到Derivative:
var x = 13.399E+153;
var d = ((1 + x) * (1 - x));
Console.WriteLine("d = {0:0}", d);
Console.ReadLine();
13.399E + 153;这9个人经常出现。但如果x变为:
var x = 14.00E+153;
我得到了-Infinity。我已经做了一些研究,但不了解任何可能的解决方案。
网址:Mathematical function differentiation with C#? 还:Limit of the derivative of a function as x goes to infinity 我明白为什么会出现这种情况:
If the limit of f(x) f(x) exists, there is a horizontal asymptote.
Therefore as the function approaches infinity it becomes more linear and
...thus the derivative approaches zero.
.
我的问题是,如果我将Derivative作为双重返回,那么解决方案是什么可以阻止它作为Infinity返回?我应该返回1还是Zero?
if (double.IsInfinity(Derivative))
{
return ?;
}
答案 0 :(得分:0)
您得到负无穷大的结果,因为结果的数学值小于可以使用64位浮点数表示的最小值。这是完全正常的,我认为没有什么需要修复的。