.net 框架在 Math 类中提供了一种对 double 进行幂运算的方法。但根据精度要求,我需要将小数提高到小数次方 [ Pow(decimal a,decimal b) ]。框架有这样的功能吗?有谁知道有这种功能的库吗?
为了解决我的问题我找到了一些扩展系列 http://mathworld.wolfram.com/MaclaurinSeries.html,我让它们实现来求解方程 X^n = e^(n * ln x)。
// Adjust this to modify the precision
public const int ITERATIONS = 27;
// power series
public static decimal DecimalExp(decimal power)
{
int iteration = ITERATIONS;
decimal result = 1;
while (iteration > 0)
{
fatorial = Factorial(iteration);
result += Pow(power, iteration) / fatorial;
iteration--;
}
return result;
}
// natural logarithm series
public static decimal LogN(decimal number)
{
decimal aux = (number - 1);
decimal result = 0;
int iteration = ITERATIONS;
while (iteration > 0)
{
result += Pow(aux, iteration) / iteration;
iteration--;
}
return result;
}
// example
void main(string[] args)
{
decimal baseValue = 1.75M;
decimal expValue = 1/252M;
decimal result = DecimalExp(expValue * LogN(baseValue));
}
Pow() 和 Factorial() 函数很简单,因为幂始终是 int(在幂级数内)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)