En mi programa, la precisión decimal es muy importante.
Muchos de mis cálculos deben ser precisos para muchos decimales (como 50).Problemas con el redondeo de decimales (python)
porque estoy utilizando pitón, He estado usando el módulo decimal (con contexto() prec = 99. es decir;. Set tener 99 cifras decimales de precisión cuando instanciar un objeto decimal)
como Pythonic los flotadores no permiten cerca de tal precisión.
Como deseo que el Usuario especifique los decimales de precisión de los cálculos, he tenido que implementar varias funciones de redondeo() en mi código.
Desafortunadamente, la función redonda incorporada y el objeto decimal no interactúan bien.
round(decimal.Decimal('2.000000000000000000001'),50)
# Number is 1e-21. There are 21 decimal places, much less than 50.
Sin embargo, el resultado es 2.0 en lugar de 2,000000000000000000001
La función de redondeo no es el redondeo a 50. Mucho menos!
Sí, me he asegurado de que el exceso de redondeo no ocurra en la creación de instancias del objeto Decimal, pero después de realizar una llamada.
Siempre paso cadenas que representan flotadores en el constructor de decimales, nunca flotantes pitonicas.
¿Por qué la función circular me está haciendo esto?
(me di cuenta de que probablemente fue diseñado originalmente para los flotadores Pythonic que nunca puede tener tantas cifras decimales, pero la documentación afirma que el objeto decimal se integra perfectamente en el código Python y es compatible con las funciones de Python incorporadas!)
¡Gracias profusamente!
(Esto me tiene muy nerviosa, ya que este problema socava el uso de todo el programa)
Especificaciones:
Python 2.7.1
Windows 7
módulo decimal (incorporado)
Quiso decir que restar 2 después de redondeo? – celtschk
Disculpa, fue un error tipográfico –
¿No estás seguro de cuál es la respuesta correcta? Aroth respondió mi pregunta, ¡pero Raymond brindó la solución! –