C#:计算负数的立方根

时间:2019-05-04 22:06:02

标签: c# math

我正在尝试使用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, 约翰

2 个答案:

答案 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)

在.NET Core / Standard 2.1中引入了

Math.Cbrt()来计算多维数据集根。现在,您可以获得比以前更数学上正确更精确的结果

只需致电Math.Cbrt(-2)