21 octubre 2006

Math.pow()

Es curioso, pero en este post del foro de java comentan que al hacer

Math.pow(-3.0, 1.0/3.0)

que teóricamente es la raíz cúbica de -3, que debería dar -1.44 aproximadamente, lo haces en java y sale NaN (Not a Number).

Revisando la API de Math.pow() vemos una cosa realmente curiosa, dice que ese es el comportamiento esperado
  • If the first argument is finite and less than zero
    • if the second argument is a finite even integer, the result is equal to the result of raising the absolute value of the first argument to the power of the second argument
    • if the second argument is a finite odd integer, the result is equal to the negative of the result of raising the absolute value of the first argument to the power of the second argument
    • if the second argument is finite and not an integer, then the result is NaN.



Bueno, pues no deja de ser curioso este comportamiento tan inesperado que impide echar ciertas cuentas. No el caso de la raíz cúbica, que se puede hacer con el método Math.cbrt() (CuBic RooT), pero sí el de las raices impares de más rango que la cúbica.

1 comentario:

kcer dijo...

Que locura lol XD!!