Tengo una función que toma argumentos flotantes (generalmente enteros o decimales con un dígito significativo), y necesito generar los valores en una cadena con dos decimales (5 -> 5.00, 5.5 -> 5.50, etc.). ¿Cómo puedo hacer esto en Python?
Tengo una función que toma argumentos flotantes (generalmente enteros o decimales con un dígito significativo), y necesito generar los valores en una cadena con dos decimales (5 -> 5.00, 5.5 -> 5.50, etc.). ¿Cómo puedo hacer esto en Python?
Respuestas:
Dado que esta publicación podría estar aquí por un tiempo, también señalemos la sintaxis de Python 3:
"{:.2f}".format(5)
formato de cadena f :
Esto era nuevo en Python 3.6: la cadena se coloca entre comillas como de costumbre, antepuesta f'...
de la misma manera que lo haría r'...
para una cadena sin formato. Luego coloca lo que quieras poner dentro de tu cadena, variables, números, dentro de llaves f'some string text with a {variable} or {number} within that text'
, y Python evalúa como con los métodos de formateo de cadenas anteriores, excepto que este método es mucho más legible.
>>> a = 3.141592
>>> print(f'My number is {a:.2f} - look at the nice rounding!')
My number is 3.14 - look at the nice rounding!
Puede ver en este ejemplo que formateamos con decimales de manera similar a los métodos de formateo de cadenas anteriores.
NB a
puede ser un número, una variable o incluso una expresión, por ejemplo f'{3*my_func(3.14):02f}'
.
En el futuro, con el nuevo código, prefiero las cadenas f sobre los métodos comunes% s o str.format (), ya que las cadenas f pueden ser mucho más legibles y, a menudo, mucho más rápidas .
Formato de cadena:
print "%.2f" % 5
math.floor
, math.ceil
oround
Formato de cadena:
a = 6.789809823
print('%.2f' %a)
O
print ("{0:.2f}".format(a))
La función redonda se puede usar:
print(round(a, 2))
Lo bueno de round () es que podemos almacenar este resultado en otra variable y luego usarlo para otros fines.
b = round(a, 2)
print(b)
round
. No debe usarse solo con fines de visualización .
round(5.0001, 2)
-> 5.0
, no'5.00'
La sintaxis más corta de Python 3:
n = 5
print(f'{n:.2f}')
Sé que es una vieja pregunta, pero estaba luchando por encontrar la respuesta yo mismo. Esto es lo que se me ocurrió:
Python 3:
>>> num_dict = {'num': 0.123, 'num2': 0.127}
>>> "{0[num]:.2f}_{0[num2]:.2f}".format(num_dict)
0.12_0.13
Usando la sintaxis de Python 3:
print('%.2f' % number)
Si desea obtener un valor de coma flotante con dos decimales limitados al momento de llamar a la entrada,
Mira esto ~
a = eval(format(float(input()), '.2f')) # if u feed 3.1415 for 'a'.
print(a) # output 3.14 will be printed.
eval
una cuerda cuando podrías simplemente round
? De todos modos, esto ni siquiera funciona correctamente, ya que si te alimentas 5
, obtienes en 5.0
lugar de lo 5.00
que OP quiere.
nan
y inf
.
d=3
, entonces la sintaxis es"{:.{}f}".format(5, d)