¿Por qué Python da la respuesta "incorrecta"?
x = 16
sqrt = x**(.5)
returns 4
sqrt = x**(1/2)
returns 1
Sí, sé que importar matemáticas
y usar sqrt
. Pero I'm buscando una respuesta a lo anterior.
sqrt=x**(1/2)
está haciendo una división entera. 1/2 == 0
.
Así que está calculando x(1/2) en el primer caso, x(0) en el segundo.
Así que no está mal, es la respuesta correcta a una pregunta diferente.
Hay que escribir: sqrt = x**(1/2.0)
, de lo contrario se realiza una división entera y la expresión 1/2
devuelve 0
.
Este comportamiento es "normal" en Python 2.x, mientras que en Python 3.x 1/2
se evalúa a 0.5
. Si quieres que tu código de Python 2.x se comporte como el de 3.x con respecto a la división, escribe from __future__ import division
- entonces 1/2
se evaluará a 0.5
y por compatibilidad con el pasado, 1//2
se evaluará a 0
.
Y para que conste, la forma preferida de calcular una raíz cuadrada es ésta:
import math
math.sqrt(x)