¿Hay una manera fácil con Python f-strings para corregir la cantidad de dígitos después del punto decimal? (Específicamente cadenas f, no otras opciones de formato de cadenas como .format o %)
Por ejemplo, digamos que quiero mostrar 2 dígitos después del lugar decimal.
¿Cómo puedo hacer eso? digamos que
a = 10.1234Incluya el especificador de tipo en su expresión de formato:
>>> a = 10.1234 >>> f'{a:.2f}' '10.12'Cuando se trata de números float , puede usar especificadores de formato :
f'{value:{width}.{precision}}'donde:
value es cualquier expresión que se evalúa como un númerowidth especifica el número de caracteres usados en total para mostrar, pero si el value necesita más espacio que el ancho especificado, entonces se usa el espacio adicional.precision indica el número de caracteres utilizados después del punto decimalLo que te falta es el especificador de tipo para tu valor decimal. En este enlace , encontrará los tipos de presentación disponibles para punto flotante y decimal.
Aquí tienes algunos ejemplos, utilizando el tipo de presentación f (Punto fijo):
# notice that it adds spaces to reach the number of characters specified by width In [1]: f'{1 + 3 * 1.5:10.3f}' Out[1]: ' 5.500' # notice that it uses more characters than the ones specified in width In [2]: f'{3000 + 3 ** (1 / 2):2.1f}' Out[2]: '3001.7' In [3]: f'{1.2345 + 4 ** (1 / 2):9.6f}' Out[3]: ' 3.234500' # omitting width but providing precision will use the required characters to display the number with the the specified decimal places In [4]: f'{1.2345 + 3 * 2:.3f}' Out[4]: '7.234' # not specifying the format will display the number with as many digits as Python calculates In [5]: f'{1.2345 + 3 * 0.5}' Out[5]: '2.7344999999999997'Agregando a la respuesta de Robᵩ: en caso de que desee imprimir números bastante grandes, usar separadores de miles puede ser de gran ayuda (tenga en cuenta la coma).
>>> f'{a*1000:,.2f}' '10,123.40'Y en caso de que quiera rellenar/usar un ancho fijo, el ancho va antes de la coma:
>>> f'{a*1000:20,.2f}' ' 10,123.40'