我正在尝试使用C#计算负数的立方根的实际答案。 Math.Pow(-2, (1.0/3.0))
产生NaN
。如何计算C#中的真实答案?
关于stackoverflow的一些帖子已经解决了如何计算数字的三次或第n个根。但是他们都没有一个如何计算负数的结果,这会导致复数。
我正在尝试将Excel工作表移植到C#。 Excels = POWER(-2; 1/3)返回一个实数。
根据这篇文章,负基的立方根有一个实数答案和两个复数答案。
https://superuser.com/questions/1432963/excel-power-function-fractional-power-issue
我对数学上最正确的解决方案不感兴趣,但是移植的C#代码的行为与Excel的= POWER()函数完全相同,后者返回了实数答案。
Br, 约翰
答案 0 :(得分:1)
最简单的方法是编写自己的函数,其功能如下:
private static double CubeRoot(double x) {
if (x < 0)
return -Math.Pow(-x, 1d / 3d);
else
return Math.Pow(x, 1d / 3d);
}
答案 1 :(得分:1)
Math.Cbrt()
来计算多维数据集根。现在,您可以获得比以前更数学上正确和更精确的结果
只需致电Math.Cbrt(-2)