El pensamiento de Xiaojie de la función Pow en el proceso de aprendizaje

Al aprender Python hoy, al usar la función pow, descubrí inesperadamente que el resultado de pow (1000,1 / 3) no era 10, sino 9.999999999999998.

print(pow(1000, 1/3))

Resultado de salida:

9.999999999999998

Como aprendí más tarde, se llama a pow () directamente a través del método incorporado, que toma el parámetro como un entero y el módulo matemático convierte el parámetro en flotante.
Entonces, ¿hay algún problema con el flotador?
Intentamos convertir 1/3 a flotante:

print(float(1/3))

Resultado de salida:

0.3333333333333333

Descubrimos que solo hay 16 decimales, y traté de continuar expandiendo sus decimales:

a = 1/3
print('%.20f' % a)

Resultado de salida:

0.33333333333333331483

Entonces podemos encontrar que su valor nunca se puede dividir por igual en 3 puntos, siempre habrá errores en él.
Calcularemos los números obtenidos.

print(1000**0.3333333333333333)

Resultado de salida:

9.999999999999998

Resuelto con éxito el caso! Es por eso que el resultado de pow (1000,1 / 3) no es 10.
¿Cómo solucionarlo?
Cuando usamos la función pow, el resultado final puede usar math.ceil () (redondear hacia arriba) para resolver el problema de resultados de salida imprecisos.

import math
a = pow(1000, 1/3)
print(math.ceil(a))

Resultado de salida:

10

Por supuesto, de lo que estamos hablando aquí es solo del problema de búsqueda de raíz cuando es un número entero. Si no es un número entero, no necesita usar la función math.ceil (). Debido a que el error resultante de usar la función pow () es extremadamente pequeño, puede ignorarse y usarse directamente.

10 artículos originales publicados · Me gusta0 · Visitas58

Supongo que te gusta

Origin blog.csdn.net/z55947810/article/details/105582546
Recomendado
Clasificación