Veamos.
Cada vez que tenga una pregunta como “cuál será la salida de x en Python”, su mejor opción es simplemente ejecutarla y ver cuál es el resultado.
En este caso, puede ir a la terminal y escribir python3, dándole un indicador de python. Luego puede ejecutar la declaración que ha especificado (por supuesto, después de importar el decimal).
>>> importar decimal >>> decimal.Decimal (2.1) .as_tuple () DecimalTuple (signo = 0, dígitos = (2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 1 , 7, 8, 4, 1, 9, 7, 0, 0, 1, 2, 5, 2, 3, 2, 3, 3, 8, 9, 0, 5, 3, 3, 4, 4, 7 , 2, 6, 5, 6, 2, 5), exponente = -51)
Y ahí lo tienes. Esa es la salida del código en cuestión.
- ¿De cuántas maneras podemos organizar los ocho dígitos 1,2,3 4,1,2,3,4 para que no haya dos dígitos idénticos adyacentes?
- ¿Cuántos ceros hay en 1 millón?
- ¿Cómo se calcula el número de Euler en un hexadecimal?
- ¿Cuál es la rotación de un número imaginario descrito únicamente en términos algebraicos?
- ¿Puedes escribir un programa C ++ que acepte algunos números del usuario y multiplique cada 4to número?
Pero tengo la sensación de que no solo quieres saber cuál es el resultado, sino también por qué es así.
Resulta que cuando crea un decimal de Python de esta manera: Decimal(2.1)
, ¡está pasando un flotante a la función constructora de Decimal! Esto anula por completo el propósito del Decimal de Python porque todo su punto es eliminar el comportamiento extraño del punto flotante que puede ver en la salida del código anterior.
Si no está familiarizado con las carrozas y por qué se comportan de esa manera, solo sepa que tiene que ver con la forma en que se almacena el número en binario, lo que puede hacer que números como 2.1
terminen siendo representados como algo así como 2.100000000000000088817841970012523233890533447265625
como puede ver aquí .
Para deshacerse de eso y crear un decimal de la manera correcta, pase una cadena del número que desea representar. De esta manera, no se estropea al convertirse primero en flotador. Esto se verá más o menos así:
>>> decimal.Decimal ('2.1'). as_tuple () DecimalTuple (signo = 0, dígitos = (2, 1), exponente = -1)
Ahora que es más de una respuesta que esperarías.
¿Pero cómo lo supe?
También es importante tener en cuenta que en realidad no sabía esto antes de decidir investigarlo yo mismo. Después de perder el tiempo en el shell de Python, fui a los documentos de Python para el decimal y miré sus ejemplos:
>>> Decimal (10) Decimal ('10 ') >>> Decimal ('3.14') Decimal ('3.14') >>> Decimal (3.14) Decimal ('3.140000000000000124344978758017532527446746826171875')
Esa es solo una pequeña parte de la documentación, pero ilustra el problema exacto que teníamos. También tenga en cuenta que si tiene más preguntas sobre este tema, probablemente sea el mejor lugar para buscar.
Te estoy mostrando esto porque creo que la mayoría de las veces es más importante mostrarle a alguien cómo encontrar respuestas en lugar de simplemente decirle cuál es la respuesta .
¡Espero que esto ayude!