2011-10-23 22 views

risposta

15

è necessario utilizzare la funzione pow:

pow(d, 1.0/n) 

enter image description here

+3

potrebbe essere saggio di utilizzare un galleggiante esplicito qui 'Pow (d, 1.0/n)', in quanto altrimenti non funzionerà con n come numero intero. – joerick

+1

buona osservazione – fceruti

+0

Questo non funzionerà con radici dispari (ad esempio cubiche) e valori negativi - vedi la mia risposta qui sotto. –

3

Matematicamente, la radice n-esima di x è x alla potenza di 1/n.

Non ho idea di quale sarebbe la sintassi dell'obiettivo-c, ma fondamentalmente si desidera utilizzare la funzione di potenza con 1/n come esponente.

1

Per radici dispari (ad esempio cubo) e numeri negativi, il risultato della radice è ben definito e negativo, ma usando solo pow(value, 1.0/n) non funzionerà (si ottiene 'NaN' - non un numero).

Quindi, utilizzare questo invece:

int f = (value < 0 && (n % 2 == 1)) ? -1 : 1; 
root = pow(value * f, 1.0/n) * f