El problema lo tienes en el mal uso de la coma flotante:
Depende del uso que le quieras dar. Si es para imprimirlo por la pantalla, podrías hacer por ejemplo (si el valor está en la variable valor)
Ese .2f en la cadena de formato está especificando lo que tú quieres: representar un número en coma flotante con hasta dos decimales, como mucho.
Si lo que quieres es hacer cálculos con el número, podrías usar round:
Python:
[LIST=1]
[*]>>> round(2.3145, 2)
[*]2.31
[/LIST]
pero hay que tener mucho cuidado con los cómputos que vas a hacer, sobre todo si estás pensando hacer cálculo financiero, porque la coma flotante tiene varios aspectos un poco inesperados (si no sabes cómo funciona la coma flotante en sí… y a veces
incluso si sabes) y es posible que alguno de los números con los que estés trabajando no pueda representarse de manera exacta. Ejemplo:
Python:
[LIST=1]
[*]>>> 0.1 * 3
[*]0.30000000000000004
[/LIST]
Esto es un artefacto ineludible, porque "0.1" no se puede codificar de manera exacta en base 2. Aunque Python esté imprimiendo "0.1", eso es porque descarta dígitos automáticamente. Ejemplo:
Python:
>>> f"{0.1:.30f}"
'0.100000000000000005551115123126'
En casos en que necesites números exactos, con precisión definida, usa en su lugar un módulo que te permita trabajar con números de aritmética
decimal de coma fija (por ejemplo, decimal)
ENLACE A LA FUENTE:
https://es.quora.com/En-Python-cómo-se-puede-redondear-un-float-con-dos-decimales