Número negativo para la potencia no inteligente en JavaScript
-
28-10-2019 - |
Pregunta
Estoy escribiendo un guión que tiene que hacer algo como esto en un momento: Math.pow(-2,1.5)
. El resultado debe ser aproximadamente -2.82843, pero en su lugar, JavaScript regresa NaN
. (Intenté esto tanto en Google Chrome 17 como en Mozilla Firefox 11.) Si el exponente es un entero, como en Math.pow(-2,3)
, entonces JavaScript devolverá la respuesta correcta, que, en este caso, es -8. Los números positivos también aumentan correctamente a los poderes no inteligentes; Math.pow(2,1.5)
evalúa aproximadamente 2.8284271247461903. ¿Hay alguna forma de que JavaScript calcule el valor de un número negativo a una potencia no inteligente?
Solución
Math.pow(-2, 1.5)
Devuelve Nan porque no hay un número real que sea igual a -2 llevado a la potencia 1.5. Hay un número complejo con esta propiedad, pero Math.pow()
No hace cálculos usando números complejos.
Esta simple transformación demuestra que este es el caso:
(-2)1.5 = (-2)1 * (-2)0.5 = (-2) * sqrt (-2) = (-2) * i * sqrt (2) = -2i * sqrt (2)