So come ottenere la radice quadrata di un numero utilizzando la funzione sqrt
.Come posso ottenere la radice cubica in C++?
Come ottenere la radice cubo di un numero?
So come ottenere la radice quadrata di un numero utilizzando la funzione sqrt
.Come posso ottenere la radice cubica in C++?
Come ottenere la radice cubo di un numero?
sqrt
sta per "radice quadrata" e "radice quadrata" significa che aumenta alla potenza di 1/2
. Non esistono cose come "radice quadrata con radice 2" o "radice quadrata con radice 3". Per other roots, si modifica la prima parola; nel tuo caso, stai cercando come eseguire il rooting dei cubi .
Prima di C++ 11, non esiste una funzione specifica per questo, ma si può tornare ai principi originari:
std::pow(n, 1/2.)
(o std::sqrt(n)
) radicestd::pow(n, 1/3.)
(o std::cbrt(n)
dal C++ 11)std::pow(n, 1/4.)
Se ci si aspetta di passare valori negativi per n
, evitare il std::pow
soluzione — it doesn't support negative inputs with fractional exponents, e questo è il motivo per cui è stato aggiunto std::cbrt
:
std::cout << std::pow(-8, 1/3.) << '\n'; // Output: -nan
std::cout << std::cbrt(-8) << '\n'; // Output: -2
N.B. Che .
è davvero importante, perché altrimenti 1/3
utilizza la divisione intera e produce 0
.
Intendo Sqrt non quadrato, ad esempio sqrt (4) = 2; –
@HavaDarabi: non capisco. 'sqrt' sta per" radice quadrata "che ti piaccia o no, e' sqrt (4) '_is_' 2'. –
+1 per la nota. è di fondamentale importanza – xis
L'ennesima radice di x è uguale a x^(1/n), quindi utilizzare std::pow
. Ma non vedo cosa questo debba fare con l'overloading dell'operatore.
Voglio sovraccaricare l'operatore sqrt !!! Come posso farlo? –
@Hava: 'sqrt' non è un" operatore "e non è possibile" sovraccaricarlo "per eseguire una cosa diversa con gli stessi argomenti. La tua terminologia è completamente sbagliata. –
@HavaDarabi no, non è – OrangeDog
include <cmath>
std::pow(n, 1./3.)
Inoltre, in C++ 11 c'è cbrt
nella stessa intestazione.
in C++ 11 std::cbrt
è stato introdotto come parte della matematica biblioteca, si può refer
sqrt()
non è un operatore.sqrt()
.Si prega di spiegare perché è necessario sovraccaricare `sqrt()` in modo che possiamo aiutarvi a fare quello che vuoi.
Scorrei uno dei metodi sopra indicati perché non hanno funzionato per me. Ho fatto pow (64, 1/3.) Insieme a pow (64, 1./3.) ma la risposta che ho ottenuto è stata 3
Ecco la mia logica.
ans = pow(n, 1/3.);
if (pow(ans, 3) != n){
ans++;
}
In realtà il round deve andare per le soluzioni di cui sopra per funzionare.
La soluzione corretta sarebbe
ans = rotonde (POW (n, 1./3).);
Si intende la radice cubica, non la "radice quadrata con radice 3". –
È possibile utilizzare pow(), con la potenza 1/3 – Kotte
http://stackoverflow.com/questions/7463486/cube-root-of-unumber – acraig5075