Как я могу получить корень куба в С++?
Я знаю, как получить квадратный корень из числа с помощью функции sqrt
.
Как получить кубический корень из числа?
Ответы
Ответ 1
sqrt
означает "квадратный корень", а "квадратный корень" означает повышение до уровня 1/2
. Нет такой вещи, как "квадратный корень с корнем 2" или "квадратный корень с корнем 3". Для других корней вы меняете первое слово; в вашем случае, вы ищете, как выполнять кубирование root.
До С++ 11 для этого нет конкретной функции, но вы можете вернуться к первым принципам:
- Квадратный корень:
std::pow(n, 1/2.)
(или std::sqrt(n)
)
- Корень куба:
std::pow(n, 1/3.)
(или std::cbrt(n)
с С++ 11)
- Четвертый корень:
std::pow(n, 1/4.)
- и др.
Если вы ожидаете передать отрицательные значения для n
, избегайте решения std::pow
— он не поддерживает отрицательные входы с дробными показателями, и именно поэтому добавлен std::cbrt
:
std::cout << std::pow(-8, 1/3.) << '\n'; // Output: -nan
std::cout << std::cbrt(-8) << '\n'; // Output: -2
N.B. То, что .
действительно важно, поскольку в противном случае 1/3
использует целочисленное деление и приводит к 0
.
Ответ 2
в С++ 11 std::cbrt
был представлен как часть библиотеки математика, вы можете refer
Ответ 3
include <cmath>
std::pow(n, 1./3.)
Кроме того, в С++ 11 есть cbrt
в том же заголовке.
Математика для чайников.
Ответ 4
n-й корень из x равен x ^ (1/n), поэтому используйте std::pow
. Но я не вижу, что это связано с перегрузкой оператора.
Ответ 5
-
sqrt()
не является оператором. - Вы не можете перегрузить
sqrt()
.
Пожалуйста, объясните, почему вам нужно перегрузить sqrt()
чтобы мы могли помочь вам сделать то, что вы хотите.
Ответ 6
Я бы отказался от любого из вышеуказанных методов, поскольку они не работали для меня. Я сделал pow (64, 1/3.) Вместе с pow (64, 1./3.), Но ответ, который я получил, был 3
Здесь моя логика.
ans = pow(n, 1/3.);
if (pow(ans, 3) != n){
ans++;
}
Ответ 7
На самом деле раунд должен работать над этими решениями.
Правильное решение будет
ans = round (pow (n, 1./3.));