Recientemente he descubierto que x**.5
y math.sqrt(x)
no siempre producen el mismo resultado en Python:¿Cuál es más exacto, x **. 5 o math.sqrt (x)?
Python 2.6.1 (r261:67517, Dec 4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)]
on win32
>>> 8885558**.5 - math.sqrt(8885558)
-4.5474735088646412e-13
Comprobación de todos los números enteros inferiores a 10 ** 7, los dos métodos produjeron resultados diferentes para casi exactamente 0,1% de las muestras, con el tamaño del error aumentando (lentamente) para números más grandes.
Entonces, la pregunta es, ¿qué método es más preciso?
¿Puedes explicar a que te refieres con "tasa de error"? –
Los dos métodos para calcular una raíz cuadrada no producen resultados idénticos para 10,103 números debajo de 10 ** 7. (O aproximadamente 0.1%) –
Veo, eso es lo que sospeché que podría haber querido decir. Probablemente encontrará que cuando hay una diferencia entre los dos métodos de cálculo, la diferencia estará en el menos significativo o posiblemente en dos bits de la representación de punto flotante. Esto se considera normal y es una consecuencia de los diferentes algoritmos utilizados para calcular los resultados. –