NaN в Math.pow(-9, 1/3.0)

Рейтинг: 0Ответов: 1Опубликовано: 28.01.2023

Помогите найти болие простой и красивый способ решиние проблемы, при Math.pow(-9, 1/3.0) выдает NaN

if (meg < 0)
{
    meg = Math.Abs(meg);
    sqrt = Math.Pow(meg, 1.0 / 3.0) * -1;
}
else
{
    sqrt = Math.Pow(meg, 1.0 / 3.0); 
}
            

вот мое решение проблемы meg - число которое может быть любым В докуметации я нашел почему так происходит но не знаю как исправить enter image description here

Помогите с решением

Ответы

▲ 0

Воспользуйтесь методом Math.Sign, он возвращает -1 для положительного и 1 для отрицательного:

var cbrt = Math.Pow(Math.Abs(x), 1 / 3.0) * Math.Sign(x);

Также, начиная с .NET Core 2.1 доступен метод Math.Cbrt:

var cbrt = Math.Cbrt(x);