Quote:
Originariamente inviato da Supdario
Questo è dovuto al fatto che prima viene svolto il calcolo 1/3, che viene successivamente approssimato (0.33333334 per un float a 32bit), di conseguenza viene eseguito il calcolo -8^0.33333334, che è impossibile da eseguire perché è impossibile determinare se l'esponente è pari o dispari.
In questo caso ti ci vorrebbe un calcolatore che sfrutta un motore algebrico (cosa che fanno solo alcuni programmi come Derive o Microsoft Math), oppure nel tuo caso, ti ci vuole una funzione che esegua la radice N_esima di un numero.
Oppure può anche andar bene un workaround, come questo:
Codice:
public double potenza(double x, double y)
{
if (x < 0 && y < 1)
return (-Math.Pow(-x, y));
else
return Math.Pow(x, y);
}
|
Infatti ho risolto cambiando il segno prima alla base e dopo al risultato, volevo sapere se esisteva qualcosa di migliore già pronto.
Grazie.